Function at 0x1d901c0
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x48
mov eax, dword [0x1e94008]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, ecx
mov dword [ebp - 0x3c], edx
mov ecx, dword [ebx + 8]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebx + 0x14]
mov edx, dword [eax + 8]
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebx + 0x28]
mov dword [ebp - 0x44], ecx
mov ecx, dword [eax]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [eax + 4]
mov dword [ebp - 0x38], ecx
mov ecx, dword [eax + 0xc]
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], ecx
mov ecx, dword [eax + 0x18]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x14], ecx
push esi
xor esi, esi
mov dword [ebp - 0x34], edx
mov eax, dword [eax + 0x38]
push edi
mov edi, dword [ebx + 0xc]
mov dword [ebp - 0x30], edi
movsx ecx, word [eax + edx*2]
mov eax, dword [ebx + 0x20]
mov dword [ebp - 0x10], esi
mov dword [ebp - 0x24], esi
lea ecx, [ecx + eax*8]
mov eax, dword [ebx + 0x10]
cmp dword [ebx + 0x24], esi
je 0x1d90250
lea edx, [esi + 0x10]
cmp eax, 2
je 0x1d90255
mov edx, 4
push dword [ebx + 0x24]
push ecx
sar ecx, 1
sub ecx, edx
mov edx, dword [ebp - 0x20]
push ecx
mov ecx, eax
mov edx, dword [edx]
call fcn.01d90150
mov edx, dword [ebx + 0x24]
add esp, 0xc
mov dword [ebp - 0x18], eax
mov ecx, 1
test edx, edx
je 0x1d9028b
mov edi, dword [ebp - 0x34]
cmp edi, dword [ebp - 8]
mov edi, dword [ebp - 0x30]
cmovge eax, ecx
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x1c], esi
je 0x1d902a7
push ecx
push dword [ebx + 0x10]
mov ecx, dword [ebp - 0x2c]
push edx
mov edx, edi
call fcn.01d96750
mov esi, eax
add esp, 0xc
mov dword [ebp - 0x10], esi
mov eax, dword [ebp - 0x14]
mov esi, dword [ebp - 0x14]
mov eax, dword [eax + 0x1c]
bsr ecx, eax
mov esi, dword [esi + 0x14]
mov edx, ecx
mov dword [ebp - 8], ecx
inc edx
mov dword [ebp - 0x28], eax
lea ecx, [edx - 0x10]
shr eax, cl
mov ecx, eax
shr ecx, 0xc
sub ecx, 8
cmp dword [ecx*4 + 0x1e5cc6c], eax
sbb eax, eax
sub esi, edx
shl esi, 3
neg eax
sub esi, eax
mov eax, dword [ebp - 0x18]
sub esi, ecx
mov dword [ebp - 8], esi
mov esi, dword [ebp - 0x10]
cmp eax, 1
je 0x1d9056b
mov edx, dword [ebp - 0x1c]
test edx, edx
je 0x1d90305
imul esi, eax
add esi, 0x2000
sar esi, 0xe
mov ecx, dword [ebx + 0x24]
test ecx, ecx
je 0x1d9040e
cmp dword [ebx + 0x10], 2
jle 0x1d9040e
cdq
sub eax, edx
mov edi, eax
sar edi, 1
cmp dword [ebp - 0x1c], 0
lea eax, [edi + 1]
lea eax, [eax + eax*2]
lea ecx, [eax + edi]
mov dword [ebp - 0x10], ecx
je 0x1d9037b
cmp esi, edi
jg 0x1d9033f
lea ecx, [esi + 1]
lea ecx, [ecx + ecx*2]
jmp 0x1d90345
mov ecx, eax
sub ecx, edi
add ecx, esi
cmp esi, edi
jg 0x1d90360
push dword [ebp - 0x10]
lea edx, [esi + esi*2]
push ecx
mov ecx, dword [ebp - 0x14]
call fcn.01d7eec0
add esp, 8
jmp 0x1d90510
push dword [ebp - 0x10]
sub eax, edi
lea edx, [esi - 1]
push ecx
mov ecx, dword [ebp - 0x14]
add edx, eax
call fcn.01d7eec0
add esp, 8
jmp 0x1d90510
mov esi, dword [ebp - 0x10]
xor edx, edx
mov eax, dword [ebp - 0x28]
div esi
xor edx, edx
mov ecx, eax
mov eax, dword [ebp - 0x14]
mov dword [eax + 0x24], ecx
mov eax, dword [eax + 0x20]
div ecx
lea ecx, [eax + 1]
cmp esi, ecx
mov ecx, esi
sbb edx, edx
sub ecx, eax
dec ecx
and edx, ecx
lea ecx, [edi + 1]
sub esi, edx
lea ecx, [ecx + ecx*2]
sub esi, eax
dec esi
cmp esi, ecx
jge 0x1d903c1
mov eax, 0x55555556
imul esi
mov esi, edx
shr esi, 0x1f
add esi, edx
jmp 0x1d903c6
sub esi, ecx
inc esi
add esi, edi
cmp esi, edi
jg 0x1d903d2
lea eax, [esi + 1]
lea eax, [eax + eax*2]
jmp 0x1d903d8
mov eax, ecx
sub eax, edi
add eax, esi
cmp esi, edi
jg 0x1d903f3
push dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
lea edx, [esi + esi*2]
push eax
call fcn.01d85b80
add esp, 8
jmp 0x1d90510
push dword [ebp - 0x10]
sub ecx, edi
lea edx, [esi - 1]
add edx, ecx
mov ecx, dword [ebp - 0x14]
push eax
call fcn.01d85b80
add esp, 8
jmp 0x1d90510
cmp dword [ebx + 0x1c], 1
jg 0x1d904f1
test ecx, ecx
jne 0x1d904f1
mov ecx, eax
sar ecx, 1
mov dword [ebp - 0x28], ecx
lea edi, [ecx + 1]
mov edx, edi
imul edx, edi
cmp dword [ebp - 0x1c], 0
mov dword [ebp - 0x10], edx
je 0x1d90478
cmp esi, ecx
jg 0x1d90441
lea edi, [esi + 1]
jmp 0x1d90446
mov edi, eax
sub edi, esi
inc edi
cmp esi, ecx
jg 0x1d90454
lea edx, [esi + 1]
imul edx, esi
sar edx, 1
jmp 0x1d90461
sub eax, esi
lea ecx, [eax + 2]
inc eax
imul ecx, eax
sar ecx, 1
sub edx, ecx
push dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
lea eax, [edx + edi]
push eax
call fcn.01d7eec0
add esp, 8
jmp 0x1d90510
mov ecx, dword [ebp - 0x14]
call fcn.01d85b50
imul edi, dword [ebp - 0x28]
sar edi, 1
cmp eax, edi
jge 0x1d904aa
lea ecx, [eax*8 + 1]
call fcn.01d9c5f0
mov edi, dword [ebp - 0x18]
lea esi, [eax - 1]
shr esi, 1
lea ecx, [esi + 1]
mov edx, ecx
imul edx, esi
sar edx, 1
jmp 0x1d904dd
mov ecx, dword [ebp - 0x10]
sub ecx, eax
lea ecx, [ecx*8 - 7]
call fcn.01d9c5f0
mov edi, dword [ebp - 0x18]
mov edx, dword [ebp - 0x10]
lea esi, [edi*2 + 2]
sub esi, eax
mov eax, edi
shr esi, 1
sub eax, esi
lea ecx, [eax + 1]
add eax, 2
imul eax, ecx
sar eax, 1
sub edx, eax
push dword [ebp - 0x10]
lea eax, [edx + ecx]
mov ecx, dword [ebp - 0x14]
push eax
call fcn.01d85b80
add esp, 8
jmp 0x1d90513
mov ecx, dword [ebp - 0x14]
test edx, edx
je 0x1d90506
inc eax
mov edx, esi
push eax
call fcn.01d7efa0
add esp, 4
jmp 0x1d90510
lea edx, [eax + 1]
call fcn.01d85c60
mov esi, eax
mov edi, dword [ebp - 0x18]
shl esi, 0xe
xor edx, edx
mov eax, esi
div edi
cmp dword [ebp - 0x1c], 0
mov edi, eax
mov dword [ebp - 0x10], edi
je 0x1d9069c
cmp dword [ebx + 0x24], 0
je 0x1d9069c
push dword [ebx + 0x10]
test edi, edi
jne 0x1d90558
push dword [ebp - 0x34]
mov edx, dword [ebp - 0x2c]
push dword [ebp - 0x40]
mov ecx, dword [ebp - 0x38]
push dword [ebp - 0x30]
call fcn.01d8f490
add esp, 0x10
jmp 0x1d9069c
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x2c]
call fcn.01d8f670
add esp, 4
jmp 0x1d9069c
cmp dword [ebx + 0x24], 0
je 0x1d90699
mov ecx, dword [ebp - 0x1c]
test ecx, ecx
je 0x1d9064b
xor eax, eax
cmp esi, 0x2000
mov esi, dword [ebx + 0x10]
setg al
mov dword [ebp - 0x24], eax
test eax, eax
je 0x1d90632
xor ecx, ecx
test esi, esi
jle 0x1d90632
movaps xmm1, xmmword [0x1e7e820]
cmp esi, 8
jb 0x1d905e0
mov eax, esi
and eax, 0x80000007
jns 0x1d905bd
dec eax
or eax, 0xfffffff8
inc eax
mov edx, esi
sub edx, eax
movups xmm0, xmmword [edi + ecx*4]
xorps xmm0, xmm1
movups xmmword [edi + ecx*4], xmm0
movups xmm0, xmmword [edi + ecx*4 + 0x10]
xorps xmm0, xmm1
movups xmmword [edi + ecx*4 + 0x10], xmm0
add ecx, 8
cmp ecx, edx
jl 0x1d905c1
cmp ecx, esi
jge 0x1d90632
mov eax, esi
sub eax, ecx
cmp eax, 4
jl 0x1d90614
mov edx, esi
lea eax, [ecx + 2]
sub edx, ecx
lea eax, [edi + eax*4]
sub edx, 4
shr edx, 2
inc edx
lea ecx, [ecx + edx*4]
lea eax, [eax + 0x10]
movups xmm0, xmmword [eax - 0x18]
xorps xmm0, xmm1
movups xmmword [eax - 0x18], xmm0
sub edx, 1
jne 0x1d90601
cmp ecx, esi
jge 0x1d90632
nop dword [eax + eax]
movss xmm0, dword [edi + ecx*4]
xorps xmm0, xmm1
movss dword [edi + ecx*4], xmm0
inc ecx
cmp ecx, esi
jl 0x1d90620
mov edx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x38]
push esi
push dword [ebp - 0x34]
push dword [ebp - 0x40]
push edi
call fcn.01d8f490
mov ecx, dword [ebp - 0x1c]
add esp, 0x10
mov eax, dword [ebp - 0x20]
cmp dword [eax], 0x10
jle 0x1d9068b
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0x1c], 0x10
jle 0x1d9068b
test ecx, ecx
mov ecx, dword [ebp - 0x14]
je 0x1d90677
mov edx, dword [ebp - 0x24]
push 2
call fcn.01d7ef10
add esp, 4
xor edi, edi
mov dword [ebp - 0x10], edi
jmp 0x1d9069c
mov edx, 2
call fcn.01d85bc0
xor edi, edi
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x10], edi
jmp 0x1d9069c
xor edi, edi
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x10], edi
jmp 0x1d9069c
mov edi, dword [ebp - 0x10]
mov eax, dword [ebp - 0x14]
mov esi, dword [eax + 0x1c]
bsr eax, esi
mov edx, eax
mov dword [ebp - 0xc], eax
inc edx
lea ecx, [edx - 0x10]
shr esi, cl
mov ecx, esi
shr ecx, 0xc
sub ecx, 8
cmp dword [ecx*4 + 0x1e5cc6c], esi
mov esi, dword [ebp - 0x14]
sbb eax, eax
neg eax
mov esi, dword [esi + 0x14]
sub esi, edx
shl esi, 3
sub esi, eax
mov eax, dword [ebp - 0x20]
sub esi, ecx
sub esi, dword [ebp - 8]
mov dword [ebp - 0x28], esi
sub dword [eax], esi
test edi, edi
jne 0x1d90703
mov ecx, dword [ebx + 0x18]
mov eax, 1
shl eax, cl
mov edx, 0x7fff
mov ecx, dword [ebp - 0x44]
dec eax
mov dword [ebp - 0x20], edi
and dword [ecx], eax
mov ecx, 0xffffc000
jmp 0x1d907f8
cmp edi, 0x4000
jne 0x1d9072d
mov ecx, dword [ebx + 0x18]
mov eax, 1
shl eax, cl
xor edx, edx
dec eax
mov dword [ebp - 0x20], 0x7fff
shl eax, cl
mov ecx, dword [ebp - 0x44]
and dword [ecx], eax
mov ecx, edi
jmp 0x1d907f8
movsx eax, di
mov edi, 0x4000
imul eax, eax
mov ecx, edi
add eax, 0x1000
sar eax, 0xd
movzx esi, ax
movsx edx, si
imul eax, edx, 0x272
sub ecx, eax
sar ecx, 0xf
add ecx, 0x2055
movsx eax, cx
imul eax, edx
add eax, edi
sar eax, 0xf
sub eax, 0x1de3
cwde
imul eax, edx
add eax, edi
sar eax, 0xf
sub eax, esi
sub eax, 0x8000
movsx esi, ax
mov eax, edi
sub eax, dword [ebp - 0x10]
cwde
imul eax, eax
mov dword [ebp - 0xc], esi
add eax, 0x1000
sar eax, 0xd
movzx edx, ax
movsx ecx, dx
imul eax, ecx, 0x272
sub edi, eax
sar edi, 0xf
add edi, 0x2055
movsx eax, di
imul eax, ecx
add eax, 0x4000
sar eax, 0xf
sub eax, 0x1de3
cwde
imul eax, ecx
add eax, 0x4000
sar eax, 0xf
sub eax, edx
mov edx, esi
sub eax, 0x8000
cwde
mov ecx, eax
mov dword [ebp - 0x20], eax
call fcn.01d8edd0
mov edi, dword [ebp - 0x10]
mov edx, esi
movsx ecx, ax
mov eax, dword [ebx + 0x10]
shl eax, 7
add eax, 0xffffff80
cwde
imul ecx, eax
add ecx, 0x4000
sar ecx, 0xf
mov esi, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x24]
mov dword [esi], eax
mov eax, esi
mov dword [eax + 4], edx
mov edx, esi
mov esi, dword [ebp - 0x28]
mov eax, dword [ebp - 0x20]
mov dword [edx + 0xc], ecx
mov ecx, dword [ebp - 4]
mov dword [edx + 0x10], edi
xor ecx, ebp
pop edi
mov dword [edx + 0x14], esi
mov dword [edx + 8], eax
pop esi
call fcn.01e029b1
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret