Function at 0x10151cc
Capabilities:
Encode data using xor
Encrypt data using salsa20 or chacha

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x240
mov eax, dword [0x1043424]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, 0x1000000
mov dword [ebp - 0x194], eax
mov eax, dword [ebp + 0xc]
push esi
mov esi, ecx
mov dword [ebp - 0x190], eax
cmp esi, ebx
mov eax, dword [ebp + 0x10]
push edi
mov dword [ebp - 0xb8], eax
mov dword [ebp - 0xe8], esi
jb 0x10167fc
mov eax, dword [0x100003c]
mov eax, dword [eax + 0x1000050]
add eax, ebx
cmp esi, eax
jae 0x1015d66
mov ecx, dword [0x1024108]
and dword [ebp - 0xc0], 0
sub esi, ebx
dec ecx
js 0x1015276
mov eax, dword [ebp - 0xc0]
add eax, ecx
cdq
sub eax, edx
sar eax, 1
lea edx, [eax*8 + 0x1004be4]
mov edi, dword [edx + 4]
and edi, 0xfffffff
cmp esi, edi
jae 0x1015261
lea ecx, [eax - 1]
jmp 0x101526e
jbe 0x101543f
inc eax
mov dword [ebp - 0xc0], eax
cmp ecx, dword [ebp - 0xc0]
jge 0x101523b
xor ecx, ecx
test ecx, ecx
je 0x1015d60
mov eax, dword [ecx]
mov edx, eax
shr eax, 4
shr edx, 1
and edx, 7
mov edi, eax
lea esi, [edx + ecx + 8]
lea eax, [esi + edi]
mov dword [ebp - 0xd8], eax
mov eax, dword [0x1021358]
sub eax, edi
mov dword [ebp - 0xdc], esi
lea ecx, [eax + 1]
sub dword [ebp - 0xdc], ebx
xor eax, eax
mov dword [ebp - 0xe8], esi
mov dword [ebp - 0x198], edi
mov dword [ebp - 0xc0], ecx
test ecx, ecx
je 0x10152f9
mov edx, dword [0x1042fc4]
shr dword [ebp - 0xc0], 0x10
imul edx, edx, 0x343fd
add edx, 0x269ec3
mov dword [0x1042fc4], edx
shr edx, 0x10
shl eax, 0x10
or eax, edx
cmp dword [ebp - 0xc0], 0
jne 0x10152c9
xor edx, edx
div ecx
mov eax, dword [ebp - 0xb8]
add eax, edx
push edi
push dword [ebp - 0xdc]
mov dword [ebp - 0xe4], eax
mov eax, 0x5097ebc5
test edi, edi
mov eax, dword [ebp - 0xd8]
pop ecx
pop ecx
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x1a4], eax
mov eax, dword [ebp - 0xe4]
mov dword [ebp - 0x1a8], ecx
mov byte [ebp - 0xad], 0
mov dword [ebp - 0xe0], edi
mov dword [ebp - 0xc0], esi
mov dword [ebp - 0xb4], eax
je 0x1015baa
lea esi, [ebp - 0x1a8]
mov eax, 0xd4d09228
mov eax, dword [ebp - 0x1a4]
mov ecx, 0xfffffff
mov edi, dword [ebp - 0x1a8]
and dword [ebp - 0xd4], 0
and dword [ebp - 0xd0], 0
and eax, ecx
and edi, ecx
add edi, ebx
mov ecx, dword [0x10051bc]
mov dword [ebp - 0xb8], eax
mov eax, ebx
sub eax, ecx
mov dword [ebp - 0xbc], edi
mov dword [ebp - 0x1a0], eax
jne 0x1015458
and dword [ebp - 0xbc], 0
cmp dword [ebp - 0xb8], 0
jbe 0x1015773
mov ecx, 0x7fffffff
mov esi, 0x3ec41ec2
mov eax, dword [ebp - 0xbc]
movzx eax, byte [edi + eax]
add eax, esi
add dword [ebp - 0xd4], eax
add eax, dword [ebp - 0xd0]
mov edx, eax
imul edx, edx, 0xaf57
rol edx, 2
ror eax, 2
xor edx, eax
mov eax, edx
imul eax, eax, 0xaf57
rol eax, 2
ror edx, 2
xor eax, edx
mov edx, esi
mul edx
lea edx, [eax + edx*2 - 0x7fffffff]
sar eax, 0x1f
and eax, ecx
sub edx, eax
mov eax, edx
sar eax, 0x1f
and eax, ecx
add eax, edx
add dword [ebp - 0xd4], eax
inc dword [ebp - 0xbc]
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp - 0xbc]
cmp eax, dword [ebp - 0xb8]
jb 0x10153c7
jmp 0x1015773
mov eax, dword [edx + 4]
and eax, 0xfffffff
mov ecx, dword [edx]
and ecx, 0x3f
lea ecx, [eax + ecx + 0x1000000]
jmp 0x1015278
mov ecx, edi
mov eax, dword [ebp - 0xb8]
mov edx, dword [0x100003c]
lea edx, [edx + 0x10000a0]
add eax, edi
sub ecx, ebx
mov esi, ecx
mov dword [ebp - 0xec], eax
mov eax, dword [edx]
mov edx, dword [edx + 4]
mov dword [ebp - 0x108], edx
mov edx, ecx
and edx, 0xfffff000
sub esi, edx
mov dword [ebp - 0x19c], esi
mov esi, dword [ebp - 0xb8]
add ecx, esi
mov esi, ecx
and esi, 0xfffff000
sub ecx, esi
add eax, ebx
mov dword [ebp - 0x104], esi
mov esi, dword [ebp - 0x108]
add esi, eax
cmp eax, esi
mov dword [ebp - 0x100], ecx
mov ecx, eax
mov dword [ebp - 0xfc], esi
jmp 0x10154d0
cmp dword [ecx], edx
jae 0x10154d8
add ecx, dword [ecx + 4]
cmp ecx, esi
mov dword [ebp - 0xf8], ecx
jne 0x10154c7
and dword [ebp - 0xf4], 0
cmp ecx, esi
je 0x1015515
cmp dword [ecx], edx
jne 0x1015515
mov edx, dword [ecx + 4]
sub edx, 8
shr edx, 1
je 0x1015515
lea eax, [ecx + 8]
movzx ecx, word [eax]
and ecx, 0xfff
cmp ecx, dword [ebp - 0x19c]
jae 0x1015515
inc dword [ebp - 0xf4]
inc eax
inc eax
cmp dword [ebp - 0xf4], edx
jne 0x10154f4
mov esi, 0x3ec41ec2
mov ecx, 0x7fffffff
mov edx, dword [ebp - 0xf8]
jmp 0x101552d
mov edi, dword [ebp - 0xbc]
cmp edx, dword [ebp - 0xfc]
je 0x10156e9
mov eax, dword [ebp - 0x104]
cmp dword [edx], eax
ja 0x10156e9
mov edx, dword [edx + 4]
add edx, 0xfffffff8
shr edx, 1
cmp dword [ebp - 0xf4], edx
mov edx, dword [ebp - 0xf8]
jne 0x1015589
add edx, dword [edx + 4]
mov dword [ebp - 0xf8], edx
cmp edx, dword [ebp - 0xfc]
je 0x10156e9
mov eax, dword [ebp - 0x104]
cmp dword [edx], eax
ja 0x10156e9
and dword [ebp - 0xf4], 0
jmp 0x1015547
mov eax, dword [ebp - 0x104]
cmp dword [edx], eax
jne 0x10155af
mov eax, dword [ebp - 0xf4]
movzx eax, word [edx + eax*2 + 8]
and eax, 0xfff
cmp eax, dword [ebp - 0x100]
jae 0x10156e9
mov eax, dword [ebp - 0xf4]
inc dword [ebp - 0xf4]
mov edi, 0xf000
test word [edx + eax*2 + 8], di
je 0x1015527
movzx eax, word [edx + eax*2 + 8]
and eax, 0xfff
xor edi, edi
mov edx, dword [edx]
lea eax, [eax + edx + 0x1000000]
mov dword [ebp - 0xb8], eax
sub eax, dword [ebp - 0xbc]
mov dword [ebp - 0x108], eax
je 0x101565c
mov eax, dword [ebp - 0xbc]
movzx eax, byte [edi + eax]
add eax, esi
add dword [ebp - 0xd4], eax
add eax, dword [ebp - 0xd0]
mov edx, eax
imul edx, edx, 0xaf57
rol edx, 2
ror eax, 2
xor edx, eax
mov eax, edx
imul eax, eax, 0xaf57
rol eax, 2
ror edx, 2
xor eax, edx
mov edx, esi
mul edx
lea edx, [eax + edx*2 - 0x7fffffff]
sar eax, 0x1f
and eax, ecx
sub edx, eax
mov eax, edx
sar eax, 0x1f
and eax, ecx
add eax, edx
add dword [ebp - 0xd4], eax
mov dword [ebp - 0xd0], eax
inc edi
cmp edi, dword [ebp - 0x108]
jb 0x10155f4
mov eax, dword [ebp - 0xb8]
mov eax, dword [eax]
sub eax, dword [ebp - 0x1a0]
mov dword [ebp - 0x1b8], eax
xor edi, edi
movzx eax, byte [ebp + edi - 0x1b8]
add eax, esi
add dword [ebp - 0xd4], eax
add eax, dword [ebp - 0xd0]
mov edx, eax
imul edx, edx, 0xaf57
rol edx, 2
ror eax, 2
xor edx, eax
mov eax, edx
imul eax, eax, 0xaf57
rol eax, 2
ror edx, 2
xor eax, edx
mov edx, esi
mul edx
lea edx, [eax + edx*2 - 0x7fffffff]
sar eax, 0x1f
and eax, ecx
sub edx, eax
mov eax, edx
sar eax, 0x1f
and eax, ecx
add eax, edx
add dword [ebp - 0xd4], eax
inc edi
mov dword [ebp - 0xd0], eax
cmp edi, 4
jb 0x1015672
mov edi, dword [ebp - 0xb8]
add edi, 4
mov dword [ebp - 0xbc], edi
jmp 0x101551f
mov eax, dword [ebp - 0xec]
and dword [ebp - 0xb8], 0
sub eax, edi
mov dword [ebp - 0xec], eax
je 0x1015773
mov eax, dword [ebp - 0xb8]
movzx eax, byte [edi + eax]
add eax, esi
add dword [ebp - 0xd4], eax
add eax, dword [ebp - 0xd0]
mov edx, eax
imul edx, edx, 0xaf57
rol edx, 2
ror eax, 2
xor edx, eax
mov eax, edx
imul eax, eax, 0xaf57
rol eax, 2
ror edx, 2
xor eax, edx
mov edx, esi
mul edx
lea edx, [eax + edx*2 - 0x7fffffff]
sar eax, 0x1f
and eax, ecx
sub edx, eax
mov eax, edx
sar eax, 0x1f
and eax, ecx
add eax, edx
add dword [ebp - 0xd4], eax
inc dword [ebp - 0xb8]
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp - 0xb8]
cmp eax, dword [ebp - 0xec]
jb 0x1015700
xor edi, edi
xor eax, eax
mov ecx, eax
and ecx, 7
mov cl, byte [ebp + ecx - 0xd4]
mov byte [ebp + eax - 0x9c], cl
inc eax
cmp eax, 0x10
jb 0x1015777
mov eax, 0x4113737d
mov esi, dword [ebp - 0x90]
mov edx, dword [ebp - 0x94]
mov ecx, dword [ebp - 0x98]
mov eax, dword [ebp - 0x9c]
mov dword [ebp - 0x238], eax
mov dword [ebp - 0x210], eax
mov eax, dword [0x1002168]
mov dword [ebp - 0x23c], eax
mov eax, dword [0x100216c]
mov dword [ebp - 0x228], eax
mov eax, dword [0x1002170]
mov dword [ebp - 0x214], eax
mov eax, dword [0x1002174]
mov dword [ebp - 0x200], eax
mov eax, dword [ebp - 0xe4]
mov dword [ebp - 0x234], ecx
mov dword [ebp - 0x20c], ecx
lea ecx, [ebp - 0x4c]
sub eax, ecx
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp - 0xe8]
sub eax, dword [ebp - 0xe4]
mov dword [ebp - 0x230], edx
mov dword [ebp - 0x22c], esi
mov dword [ebp - 0x208], edx
mov dword [ebp - 0x204], esi
mov dword [ebp - 0x224], edi
mov dword [ebp - 0x220], edi
mov dword [ebp - 0x21c], edi
mov dword [ebp - 0x218], edi
mov dword [ebp - 0xec], eax
lea edi, [ebp - 0x14c]
lea esi, [ebp - 0x23c]
push 0x10
pop ecx
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x13c]
mov esi, dword [ebp - 0x11c]
mov ecx, dword [ebp - 0x12c]
mov dword [ebp - 0xb8], 3
mov edx, dword [ebp - 0x14c]
lea edi, [esi + edx]
rol edi, 7
xor eax, edi
lea edi, [edx + eax]
rol edi, 9
xor ecx, edi
lea edi, [ecx + eax]
rol edi, 0xd
xor esi, edi
lea edi, [ecx + esi]
ror edi, 0xe
xor edx, edi
mov dword [ebp - 0x14c], edx
mov edi, dword [ebp - 0x138]
mov edx, dword [ebp - 0x148]
add edx, edi
rol edx, 7
xor dword [ebp - 0x128], edx
mov edx, edi
mov edi, dword [ebp - 0x128]
add edx, edi
rol edx, 9
xor dword [ebp - 0x118], edx
mov edx, edi
mov edi, dword [ebp - 0x118]
add edi, edx
rol edi, 0xd
mov edx, dword [ebp - 0x118]
xor dword [ebp - 0x148], edi
mov edi, dword [ebp - 0x148]
add edx, edi
ror edx, 0xe
mov edi, dword [ebp - 0x124]
xor dword [ebp - 0x138], edx
mov edx, dword [ebp - 0x134]
add edx, edi
rol edx, 7
xor dword [ebp - 0x114], edx
mov edx, edi
mov edi, dword [ebp - 0x114]
add edx, edi
rol edx, 9
xor dword [ebp - 0x144], edx
mov edx, edi
mov edi, dword [ebp - 0x144]
add edi, edx
rol edi, 0xd
mov edx, dword [ebp - 0x144]
xor dword [ebp - 0x134], edi
mov edi, dword [ebp - 0x134]
add edx, edi
mov edi, dword [ebp - 0x110]
ror edx, 0xe
xor dword [ebp - 0x124], edx
mov edx, dword [ebp - 0x120]
add edx, edi
rol edx, 7
xor dword [ebp - 0x140], edx
mov edx, edi
mov edi, dword [ebp - 0x140]
add edx, edi
rol edx, 9
xor dword [ebp - 0x130], edx
mov edx, edi
mov edi, dword [ebp - 0x130]
add edi, edx
mov edx, dword [ebp - 0x130]
rol edi, 0xd
xor dword [ebp - 0x120], edi
mov edi, dword [ebp - 0x120]
add edx, edi
mov edi, dword [ebp - 0x14c]
ror edx, 0xe
xor dword [ebp - 0x110], edx
mov edx, dword [ebp - 0x140]
add edx, edi
rol edx, 7
xor dword [ebp - 0x148], edx
mov edx, edi
mov edi, dword [ebp - 0x148]
add edi, edx
rol edi, 9
mov edx, dword [ebp - 0x148]
xor dword [ebp - 0x144], edi
mov edi, dword [ebp - 0x144]
add edi, edx
mov edx, dword [ebp - 0x144]
rol edi, 0xd
xor dword [ebp - 0x140], edi
mov edi, dword [ebp - 0x140]
add edi, edx
mov edx, dword [ebp - 0x138]
add edx, eax
ror edi, 0xe
xor dword [ebp - 0x14c], edi
rol edx, 7
xor dword [ebp - 0x134], edx
mov edx, dword [ebp - 0x138]
mov edi, dword [ebp - 0x134]
add edi, edx
mov edx, dword [ebp - 0x134]
rol edi, 9
xor dword [ebp - 0x130], edi
mov edi, dword [ebp - 0x130]
add edi, edx
rol edi, 0xd
xor eax, edi
mov edi, dword [ebp - 0x128]
mov edx, dword [ebp - 0x130]
add edx, eax
ror edx, 0xe
xor dword [ebp - 0x138], edx
mov edx, dword [ebp - 0x124]
add edx, edi
rol edx, 7
xor dword [ebp - 0x120], edx
mov edx, dword [ebp - 0x124]
mov edi, dword [ebp - 0x120]
add edi, edx
rol edi, 9
xor ecx, edi
mov edx, dword [ebp - 0x120]
mov edi, dword [ebp - 0x114]
add edx, ecx
rol edx, 0xd
xor dword [ebp - 0x128], edx
mov edx, dword [ebp - 0x128]
add edx, ecx
ror edx, 0xe
xor dword [ebp - 0x124], edx
mov edx, dword [ebp - 0x110]
add edx, edi
rol edx, 7
xor esi, edx
mov edx, dword [ebp - 0x110]
add edx, esi
rol edx, 9
xor dword [ebp - 0x118], edx
mov edx, dword [ebp - 0x118]
add edx, esi
rol edx, 0xd
xor dword [ebp - 0x114], edx
mov edx, dword [ebp - 0x118]
mov edi, dword [ebp - 0x114]
add edi, edx
ror edi, 0xe
xor dword [ebp - 0x110], edi
dec dword [ebp - 0xb8]
jne 0x1015871
mov dword [ebp - 0x13c], eax
mov dword [ebp - 0x11c], esi
mov dword [ebp - 0x12c], ecx
xor eax, eax
mov ecx, dword [ebp + eax - 0x23c]
add dword [ebp + eax - 0x14c], ecx
add eax, 4
cmp eax, 0x40
jl 0x1015af5
lea esi, [ebp - 0x14c]
lea edi, [ebp - 0x4c]
inc dword [ebp - 0x21c]
push 0x10
pop ecx
rep movsd dword es:[edi], dword [esi]
xor esi, esi
cmp dword [ebp - 0xe0], 0x40
jbe 0x1015b73
mov edi, dword [ebp - 0xbc]
mov eax, dword [ebp - 0xec]
lea edx, [edi + eax]
lea ecx, [ebp + esi - 0x4c]
mov al, byte [edx + ecx]
xor al, byte [ecx]
xor byte [ebp - 0xad], al
inc esi
cmp esi, 0x40
mov byte [ecx + edi], al
jb 0x1015b39
push 0x40
pop eax
sub dword [ebp - 0xe0], eax
add dword [ebp - 0xb4], eax
add edi, eax
add dword [ebp - 0xc0], eax
mov dword [ebp - 0xbc], edi
jmp 0x1015844
cmp dword [ebp - 0xe0], 0
jbe 0x1015baa
lea eax, [ebp - 0x4c]
mov edi, dword [ebp - 0xc0]
mov edx, dword [ebp - 0xb4]
sub edi, eax
sub edx, eax
lea ecx, [ebp + esi - 0x4c]
mov al, byte [ecx + edi]
xor al, byte [ecx]
xor byte [ebp - 0xad], al
inc esi
mov byte [ecx + edx], al
cmp esi, dword [ebp - 0xe0]
jb 0x1015b8f
mov ecx, dword [ebp - 0xd8]
movzx ecx, byte [ecx + 8]
movzx eax, byte [ebp - 0xad]
sub eax, ecx
je 0x1015c5e
call fcn.0100d9b4
mov esi, 0xffff
mov ebx, eax
mov edx, dword [ebp - 0x194]
mov eax, 0xfffff000
mov dword [edx + 8], 0x1016d68
lea ecx, [edx + 0xc]
mov dword [ebp - 0xb4], esi
and ecx, 0xfffffffc
and ebx, eax
lea edi, [ecx + 0xfff]
and edi, eax
xor eax, eax
mov edx, dword [0x1042fc4]
shr dword [ebp - 0xb4], 0x10
imul edx, edx, 0x343fd
add edx, 0x269ec3
mov dword [0x1042fc4], edx
shr edx, 0x10
shl eax, 0x10
or eax, edx
cmp dword [ebp - 0xb4], 0
jne 0x1015bf9
xor edx, edx
div esi
mov eax, dword [ebp - 0x190]
inc edx
mov dword [eax + 0x1c], ebx
mov dword [eax], edx
mov dword [ebp - 0xec], 0
jmp 0x1015c50
mov eax, dword [ebp - 0xec]
mov dword [ecx], eax
add ecx, 4
cmp ecx, edi
jb 0x1015c45
mov eax, 0x1016d68
jmp 0x1016891
mov ecx, dword [0x10051bc]
mov eax, dword [ebp - 0xe8]
sub eax, dword [ebp - 0xe4]
sub ebx, ecx
mov dword [ebp - 0xb4], eax
mov dword [ebp - 0xd8], ebx
jne 0x1015c88
test eax, eax
je 0x1015d4b
mov ecx, dword [ebp - 0x198]
mov eax, dword [ebp - 0xdc]
mov esi, dword [ebp - 0xe4]
sub esi, dword [ebp - 0xe8]
add eax, ecx
xor ebx, ebx
mov ecx, dword [0x1001168]
mov dword [ebp - 0x198], eax
dec ecx
js 0x1015cde
lea eax, [ecx + ebx]
cdq
sub eax, edx
sar eax, 1
mov edx, dword [eax*4 + 0x100116c]
and edx, 0xfffffff
cmp dword [ebp - 0xdc], edx
jae 0x1015cd5
lea ecx, [eax - 1]
jmp 0x1015cda
jbe 0x1015ce2
lea ebx, [eax + 1]
cmp ecx, ebx
jge 0x1015cb3
mov edi, ebx
jmp 0x1015d43
mov edi, eax
jmp 0x1015d43
mov eax, dword [edi*4 + 0x100116c]
mov ecx, eax
and ecx, 0xfffffff
cmp ecx, dword [ebp - 0x198]
jae 0x1015d4b
lea ebx, [ecx + esi + 0x1000000]
mov ecx, eax
shl ecx, 2
sar ecx, 0x1e
sar eax, 0x1e
and ecx, 3
and eax, 3
xor edx, edx
dec ecx
je 0x1015d30
dec ecx
je 0x1015d28
dec ecx
jne 0x1015d3c
mov edx, dword [ebp - 0xd8]
jmp 0x1015d3c
mov edx, dword [ebp - 0xb4]
jmp 0x1015d3c
mov edx, dword [ebp - 0xd8]
sub edx, dword [ebp - 0xb4]
dec eax
dec eax
jne 0x1015d42
add dword [ebx], edx
inc edi
cmp edi, dword [0x1001168]
jb 0x1015ce6
mov eax, dword [0x1021358]
mov eax, 0xaa5120f4
mov eax, dword [ebp - 0xe4]
jmp 0x1016891
mov esi, dword [ebp - 0xe8]
cmp esi, ebx
jb 0x10167fc
mov eax, dword [0x100003c]
mov eax, dword [eax + 0x1000050]
add eax, ebx
cmp esi, eax
jae 0x10167fc
mov ecx, dword [0x1004a08]
and dword [ebp - 0xb4], 0
sub esi, ebx
dec ecx
js 0x1015dcf
mov eax, dword [ebp - 0xb4]
add eax, ecx
cdq
sub eax, edx
sar eax, 1
lea edx, [eax*8 + 0x1022f10]
mov edi, dword [edx]
and edi, 0xfffffff
cmp esi, edi
jae 0x1015dba
lea ecx, [eax - 1]
jmp 0x1015dc7
jbe 0x1015f69
inc eax
mov dword [ebp - 0xb4], eax
cmp ecx, dword [ebp - 0xb4]
jge 0x1015d95
xor ecx, ecx
test ecx, ecx
je 0x10167fc
mov eax, dword [ecx]
mov edx, eax
shr eax, 4
and edx, 7
mov esi, eax
lea edi, [edx + ecx + 8]
lea eax, [esi + edi]
mov dword [ebp - 0x108], eax
mov eax, dword [0x1021358]
mov dword [ebp - 0xdc], edi
sub eax, esi
sub dword [ebp - 0xdc], ebx
lea ecx, [eax + 1]
xor eax, eax
test ecx, ecx
mov dword [ebp - 0xe8], edi
mov dword [ebp - 0x19c], esi
mov dword [ebp - 0xb4], ecx
je 0x1015e50
mov edx, dword [0x1042fc4]
shr dword [ebp - 0xb4], 0x10
imul edx, edx, 0x343fd
add edx, 0x269ec3
mov dword [0x1042fc4], edx
shr edx, 0x10
shl eax, 0x10
or eax, edx
cmp dword [ebp - 0xb4], 0
jne 0x1015e20
xor edx, edx
div ecx
mov eax, dword [ebp - 0xb8]
add eax, edx
push esi
push dword [ebp - 0xdc]
mov dword [ebp - 0xc0], eax
mov eax, 0x4016a235
mov eax, dword [ebp - 0x108]
pop ecx
pop ecx
mov ecx, dword [eax]
mov eax, dword [eax + 4]
test esi, esi
mov dword [ebp - 0x1ac], eax
mov eax, dword [ebp - 0xc0]
mov dword [ebp - 0x1b0], ecx
mov byte [ebp - 0xad], 0
mov dword [ebp - 0xe0], esi
mov dword [ebp - 0xbc], edi
mov dword [ebp - 0xe4], eax
je 0x101664d
lea esi, [ebp - 0x1b0]
mov eax, 0xe4ec3a46
mov ecx, 0xfffffff
mov eax, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
and dword [ebp - 0xcc], 0
and dword [ebp - 0xc8], 0
and eax, ecx
and edi, ecx
add edi, ebx
mov ecx, dword [0x10051bc]
mov dword [ebp - 0xb8], eax
mov eax, ebx
sub eax, ecx
mov dword [ebp - 0x1a0], eax
jne 0x1015f83
xor ebx, ebx
cmp dword [ebp - 0xb8], ebx
jbe 0x101622a
mov esi, 0x5737992
mov ecx, 0x7fffffff
mov edx, esi
movzx eax, byte [edi + ebx]
add eax, esi
add dword [ebp - 0xcc], eax
add eax, dword [ebp - 0xc8]
mul edx
lea edx, [eax + edx*2 - 0x7fffffff]
sar eax, 0x1f
and eax, ecx
sub edx, eax
mov eax, edx
sar eax, 0x1f
and eax, ecx
add eax, edx
mov edx, eax
imul edx, edx, 0x1745
rol edx, 2
ror eax, 2
xor edx, eax
add dword [ebp - 0xcc], edx
mov dword [ebp - 0xc8], edx
inc ebx
cmp ebx, dword [ebp - 0xb8]
jb 0x1015f12
jmp 0x101622a
mov ecx, dword [edx]
mov eax, dword [edx + 4]
and eax, 0x3f
and ecx, 0xfffffff
lea ecx, [eax + ecx + 0x1000000]
jmp 0x1015dd1
mov ecx, edi
mov edx, dword [0x100003c]
mov eax, dword [ebp - 0xb8]
add eax, edi
lea edx, [edx + 0x10000a0]
mov dword [ebp - 0xf0], eax
mov eax, dword [edx]
mov edx, dword [edx + 4]
add eax, ebx
mov dword [ebp - 0x198], edx
sub ecx, ebx
mov edx, ecx
mov esi, ecx
mov ebx, 0xfffff000
and edx, ebx
sub esi, edx
mov dword [ebp - 0xec], esi
mov esi, dword [ebp - 0xb8]
add ecx, esi
mov esi, ecx
and esi, ebx
sub ecx, esi
mov dword [ebp - 0x100], ecx
mov ecx, dword [ebp - 0x198]
mov dword [ebp - 0x104], esi
mov ebx, eax
add ecx, eax
cmp eax, ecx
mov dword [ebp - 0xfc], ecx
je 0x1015ffa
cmp dword [ebx], edx
jae 0x1015ffa
add ebx, dword [ebx + 4]
cmp ebx, ecx
jne 0x1015fef
xor eax, eax
cmp ebx, ecx
je 0x1016029
cmp dword [ebx], edx
jne 0x1016029
mov edx, dword [ebx + 4]
sub edx, 8
shr edx, 1
je 0x1016029
lea ecx, [ebx + 8]
movzx esi, word [ecx]
and esi, 0xfff
cmp esi, dword [ebp - 0xec]
jae 0x1016029
inc eax
inc ecx
inc ecx
cmp eax, edx
jne 0x1016011
mov esi, 0x5737992
mov ecx, 0x7fffffff
jmp 0x101603b
mov eax, dword [ebp - 0xf4]
cmp ebx, dword [ebp - 0xfc]
je 0x10161c6
mov edx, dword [ebp - 0x104]
cmp dword [ebx], edx
ja 0x10161c6
mov edx, dword [ebx + 4]
add edx, 0xfffffff8
shr edx, 1
cmp eax, edx
jne 0x1016082
add ebx, dword [ebx + 4]
cmp ebx, dword [ebp - 0xfc]
je 0x10161c6
mov eax, dword [ebp - 0x104]
cmp dword [ebx], eax
ja 0x10161c6
xor eax, eax
jmp 0x1016055
mov edx, dword [ebp - 0x104]
cmp dword [ebx], edx
jne 0x10160a3
movzx edx, word [ebx + eax*2 + 8]
and edx, 0xfff
cmp edx, dword [ebp - 0x100]
jae 0x10161c6
mov edx, eax
inc eax
mov dword [ebp - 0xf4], eax
mov eax, 0xf000
test word [ebx + edx*2 + 8], ax
je 0x1016035
movzx eax, word [ebx + edx*2 + 8]
mov edx, dword [ebx]
and dword [ebp - 0xb8], 0
and eax, 0xfff
lea eax, [eax + edx + 0x1000000]
mov dword [ebp - 0xb4], eax
sub dword [ebp - 0xb4], edi
mov dword [ebp - 0xd8], eax
je 0x1016155
mov eax, dword [ebp - 0xb8]
mov edx, esi
movzx eax, byte [edi + eax]
add eax, esi
add dword [ebp - 0xcc], eax
add eax, dword [ebp - 0xc8]
mul edx
lea edx, [eax + edx*2 - 0x7fffffff]
sar eax, 0x1f
and eax, ecx
sub edx, eax
mov eax, edx
sar eax, 0x1f
and eax, ecx
add eax, edx
mov edx, eax
imul edx, edx, 0x1745
rol edx, 2
ror eax, 2
xor edx, eax
mov eax, edx
add dword [ebp - 0xcc], eax
inc dword [ebp - 0xb8]
mov eax, dword [ebp - 0xb8]
mov dword [ebp - 0xc8], edx
cmp eax, dword [ebp - 0xb4]
jb 0x10160ea
mov eax, dword [ebp - 0xd8]
mov eax, dword [eax]
sub eax, dword [ebp - 0x1a0]
xor edi, edi
mov dword [ebp - 0x1b4], eax
movzx eax, byte [ebp + edi - 0x1b4]
add eax, esi
add dword [ebp - 0xcc], eax
mov edx, esi
add eax, dword [ebp - 0xc8]
mul edx
lea edx, [eax + edx*2 - 0x7fffffff]
sar eax, 0x1f
and eax, ecx
sub edx, eax
mov eax, edx
sar eax, 0x1f
and eax, ecx
add eax, edx
mov edx, eax
imul edx, edx, 0x1745
rol edx, 2
ror eax, 2
xor edx, eax
add dword [ebp - 0xcc], edx
mov dword [ebp - 0xc8], edx
inc edi
cmp edi, 4
jb 0x1016165
mov edi, dword [ebp - 0xd8]
add edi, 4
jmp 0x1016035
mov eax, dword [ebp - 0xf0]
xor ebx, ebx
sub eax, edi
mov dword [ebp - 0xf0], eax
je 0x101622a
movzx eax, byte [edi + ebx]
add eax, esi
add dword [ebp - 0xcc], eax
add eax, dword [ebp - 0xc8]
mov edx, esi
mul edx
lea edx, [eax + edx*2 - 0x7fffffff]
sar eax, 0x1f
and eax, ecx
sub edx, eax
mov eax, edx
sar eax, 0x1f
and eax, ecx
add eax, edx
mov edx, eax
imul edx, edx, 0x1745
rol edx, 2
ror eax, 2
xor edx, eax
add dword [ebp - 0xcc], edx
inc ebx
mov dword [ebp - 0xc8], edx
cmp ebx, dword [ebp - 0xf0]
jb 0x10161d8
xor edi, edi
xor eax, eax
mov ecx, eax
and ecx, 7
mov cl, byte [ebp + ecx - 0xcc]
mov byte [ebp + eax - 0xac], cl
inc eax
cmp eax, 0x10
jb 0x101622e
mov eax, 0xb3a39a29
mov eax, dword [ebp - 0xac]
mov esi, dword [ebp - 0xa0]
mov ecx, dword [ebp - 0xa8]
mov edx, dword [ebp - 0xa4]
mov dword [ebp - 0x1f8], eax
mov dword [ebp - 0x1d0], eax
mov eax, dword [0x1002168]
mov dword [ebp - 0x1fc], eax
mov eax, dword [0x100216c]
mov dword [ebp - 0x1e8], eax
mov eax, dword [0x1002170]
mov dword [ebp - 0x1d4], eax
mov eax, dword [0x1002174]
mov dword [ebp - 0x1c0], eax
lea eax, [ebp - 0x8c]
sub eax, dword [ebp - 0xe8]
mov dword [ebp - 0x1f4], ecx
mov dword [ebp - 0x1f0], edx
mov dword [ebp - 0x1ec], esi
mov dword [ebp - 0x1cc], ecx
mov dword [ebp - 0x1c8], edx
mov dword [ebp - 0x1c4], esi
mov dword [ebp - 0x1e4], edi
mov dword [ebp - 0x1e0], edi
mov dword [ebp - 0x1dc], edi
mov dword [ebp - 0x1d8], edi
mov dword [ebp - 0xb4], eax
lea edi, [ebp - 0x18c]
lea esi, [ebp - 0x1fc]
push 0x10
pop ecx
rep movsd dword es:[edi], dword [esi]
mov edx, dword [ebp - 0x15c]
mov esi, dword [ebp - 0x18c]
mov ecx, dword [ebp - 0x16c]
mov eax, dword [ebp - 0x17c]
mov dword [ebp - 0xd8], 2
lea edi, [esi + edx]
mov ebx, dword [ebp - 0x178]
rol edi, 7
xor eax, edi
lea edi, [esi + eax]
rol edi, 9
xor ecx, edi
lea edi, [ecx + eax]
rol edi, 0xd
xor edx, edi
lea edi, [ecx + edx]
ror edi, 0xe
xor esi, edi
mov edi, dword [ebp - 0x188]
add edi, ebx
rol edi, 7
xor dword [ebp - 0x168], edi
mov edi, ebx
mov ebx, dword [ebp - 0x168]
add edi, ebx
rol edi, 9
xor dword [ebp - 0x158], edi
mov edi, ebx
mov ebx, dword [ebp - 0x158]
add ebx, edi
mov edi, dword [ebp - 0x158]
rol ebx, 0xd
xor dword [ebp - 0x188], ebx
mov ebx, dword [ebp - 0x188]
add edi, ebx
mov ebx, dword [ebp - 0x164]
ror edi, 0xe
xor dword [ebp - 0x178], edi
mov edi, dword [ebp - 0x174]
add edi, ebx
rol edi, 7
xor dword [ebp - 0x154], edi
mov edi, ebx
mov ebx, dword [ebp - 0x154]
add edi, ebx
rol edi, 9
xor dword [ebp - 0x184], edi
mov edi, ebx
mov ebx, dword [ebp - 0x184]
add ebx, edi
rol ebx, 0xd
mov edi, dword [ebp - 0x184]
xor dword [ebp - 0x174], ebx
mov ebx, dword [ebp - 0x174]
add edi, ebx
ror edi, 0xe
mov ebx, dword [ebp - 0x150]
xor dword [ebp - 0x164], edi
mov edi, dword [ebp - 0x160]
add edi, ebx
rol edi, 7
xor dword [ebp - 0x180], edi
mov edi, ebx
mov ebx, dword [ebp - 0x180]
add edi, ebx
rol edi, 9
xor dword [ebp - 0x170], edi
mov edi, ebx
mov ebx, dword [ebp - 0x170]
add ebx, edi
mov edi, dword [ebp - 0x170]
rol ebx, 0xd
xor dword [ebp - 0x160], ebx
mov ebx, dword [ebp - 0x160]
add edi, ebx
ror edi, 0xe
xor dword [ebp - 0x150], edi
mov edi, dword [ebp - 0x180]
add edi, esi
rol edi, 7
xor dword [ebp - 0x188], edi
mov edi, dword [ebp - 0x188]
add edi, esi
rol edi, 9
xor dword [ebp - 0x184], edi
mov ebx, dword [ebp - 0x184]
mov edi, dword [ebp - 0x188]
add ebx, edi
rol ebx, 0xd
mov edi, dword [ebp - 0x184]
xor dword [ebp - 0x180], ebx
mov ebx, dword [ebp - 0x180]
add ebx, edi
mov edi, dword [ebp - 0x178]
add edi, eax
ror ebx, 0xe
xor esi, ebx
rol edi, 7
xor dword [ebp - 0x174], edi
mov edi, dword [ebp - 0x178]
mov ebx, dword [ebp - 0x174]
add ebx, edi
rol ebx, 9
mov edi, dword [ebp - 0x174]
xor dword [ebp - 0x170], ebx
mov ebx, dword [ebp - 0x170]
add ebx, edi
rol ebx, 0xd
mov edi, dword [ebp - 0x170]
xor eax, ebx
add edi, eax
ror edi, 0xe
mov ebx, dword [ebp - 0x168]
xor dword [ebp - 0x178], edi
mov edi, dword [ebp - 0x164]
add edi, ebx
rol edi, 7
xor dword [ebp - 0x160], edi
mov edi, dword [ebp - 0x164]
mov ebx, dword [ebp - 0x160]
add ebx, edi
mov edi, dword [ebp - 0x160]
rol ebx, 9
xor ecx, ebx
mov ebx, dword [ebp - 0x154]
add edi, ecx
rol edi, 0xd
xor dword [ebp - 0x168], edi
mov edi, dword [ebp - 0x168]
add edi, ecx
ror edi, 0xe
xor dword [ebp - 0x164], edi
mov edi, dword [ebp - 0x150]
add edi, ebx
rol edi, 7
xor edx, edi
mov edi, dword [ebp - 0x150]
add edi, edx
rol edi, 9
xor dword [ebp - 0x158], edi
mov edi, dword [ebp - 0x158]
add edi, edx
rol edi, 0xd
xor dword [ebp - 0x154], edi
mov ebx, dword [ebp - 0x154]
mov edi, dword [ebp - 0x158]
add ebx, edi
ror ebx, 0xe
xor dword [ebp - 0x150], ebx
dec dword [ebp - 0xd8]
jne 0x101631d
push 0x40
mov dword [ebp - 0x15c], edx
mov dword [ebp - 0x17c], eax
xor eax, eax
mov dword [ebp - 0x16c], ecx
mov dword [ebp - 0x18c], esi
pop edx
mov ecx, dword [ebp + eax - 0x1fc]
add dword [ebp + eax - 0x18c], ecx
add eax, 4
cmp eax, edx
jl 0x1016592
lea edi, [ebp - 0x8c]
lea esi, [ebp - 0x18c]
inc dword [ebp - 0x1dc]
push 0x10
pop ecx
rep movsd dword es:[edi], dword [esi]
cmp dword [ebp - 0xe0], edx
jbe 0x101660b
mov esi, dword [ebp - 0xe4]
mov ecx, dword [ebp - 0xbc]
sub esi, ecx
mov edi, edx
mov eax, dword [ebp - 0xb4]
mov al, byte [eax + ecx]
xor al, byte [ecx]
xor byte [ebp - 0xad], al
mov byte [ecx + esi], al
inc ecx
dec edi
jne 0x10165d6
sub dword [ebp - 0xe0], edx
add dword [ebp - 0xe4], edx
add dword [ebp - 0xbc], edx
sub dword [ebp - 0xb4], edx
jmp 0x10162ea
cmp dword [ebp - 0xe0], 0
jbe 0x1016642
mov edx, dword [ebp - 0xe0]
mov ecx, dword [ebp - 0xbc]
lea esi, [ebp - 0x8c]
mov edi, dword [ebp - 0xe4]
sub esi, ecx
sub edi, ecx
mov al, byte [ecx + esi]
xor al, byte [ecx]
xor byte [ebp - 0xad], al
mov byte [ecx + edi], al
inc ecx
dec edx
jne 0x1016630
mov ebx, 0x1000000
mov esi, dword [ebp - 0x19c]
movzx eax, byte [ebp - 0xad]
mov ecx, dword [ebp - 0x108]
movzx ecx, byte [ecx + 8]
sub eax, ecx
je 0x1016704
call fcn.0100d9b4
mov ebx, eax
mov esi, 0xffff
mov eax, dword [ebp - 0x194]
lea ecx, [eax + 0xc]
mov edx, 0xfffff000
and ecx, 0xfffffffc
mov dword [eax + 8], 0x1016d68
lea edi, [ecx + 0xfff]
mov dword [ebp - 0xb4], esi
and ebx, edx
and edi, edx
xor eax, eax
mov edx, dword [0x1042fc4]
shr dword [ebp - 0xb4], 0x10
imul edx, edx, 0x343fd
add edx, 0x269ec3
mov dword [0x1042fc4], edx
shr edx, 0x10
shl eax, 0x10
or eax, edx
cmp dword [ebp - 0xb4], 0
jne 0x101669c
xor edx, edx
div esi
inc edx
cmp ecx, edi
mov eax, dword [ebp - 0x190]
mov dword [eax + 0x1c], ebx
mov dword [eax], edx
mov dword [ebp - 0xf0], 0
mov eax, ecx
jae 0x1015c54
mov ecx, dword [ebp - 0xf0]
mov dword [eax], ecx
add eax, 4
cmp eax, edi
jb 0x10166f0
jmp 0x1015c54
mov eax, dword [ebp - 0xe8]
mov ecx, dword [0x10051bc]
sub eax, dword [ebp - 0xc0]
mov dword [ebp - 0x194], eax
sub ebx, ecx
mov dword [ebp - 0x190], ebx
jne 0x101672e
test eax, eax
je 0x10167e7
mov edi, dword [ebp - 0xdc]
mov ecx, dword [0x1001168]
mov ebx, dword [ebp - 0xc0]
sub ebx, dword [ebp - 0xe8]
add esi, edi
mov dword [ebp - 0xf0], esi
xor esi, esi
dec ecx
js 0x101677a
lea eax, [ecx + esi]
cdq
sub eax, edx
sar eax, 1
mov edx, dword [eax*4 + 0x100116c]
and edx, 0xfffffff
cmp edi, edx
jae 0x1016771
lea ecx, [eax - 1]
jmp 0x1016776
jbe 0x101677e
lea esi, [eax + 1]
cmp ecx, esi
jge 0x1016753
mov edi, esi
jmp 0x10167df
mov edi, eax
jmp 0x10167df
mov eax, dword [edi*4 + 0x100116c]
mov ecx, eax
and ecx, 0xfffffff
cmp ecx, dword [ebp - 0xf0]
jae 0x10167e7
lea esi, [ecx + ebx + 0x1000000]
mov ecx, eax
shl ecx, 2
sar ecx, 0x1e
sar eax, 0x1e
and ecx, 3
and eax, 3
xor edx, edx
dec ecx
je 0x10167cc
dec ecx
je 0x10167c4
dec ecx
jne 0x10167d8
mov edx, dword [ebp - 0x190]
jmp 0x10167d8
mov edx, dword [ebp - 0x194]
jmp 0x10167d8
mov edx, dword [ebp - 0x190]
sub edx, dword [ebp - 0x194]
dec eax
dec eax
jne 0x10167de
add dword [esi], edx
inc edi
cmp edi, dword [0x1001168]
jb 0x1016782
mov eax, dword [0x1021358]
mov eax, 0xc8f334d4
mov eax, dword [ebp - 0xc0]
jmp 0x1016891
mov eax, 0x25c48152
mov esi, 0x1039008
mov edi, dword [ebp - 0xb8]
cmp edi, esi
jb 0x1016847
mov ecx, dword [0x1021358]
mov eax, dword [0x10049b0]
imul eax, ecx
lea eax, [eax + 0x1039008]
cmp edi, eax
jae 0x1016847
mov eax, edi
mov ecx, dword [0x1021358]
sub eax, esi
xor edx, edx
div ecx
mov ecx, dword [0x1021358]
imul ecx, eax
lea eax, [ecx + 0x1039008]
jmp 0x1016849
xor eax, eax
test eax, eax
je 0x101686e
mov eax, edi
sub eax, esi
mov ecx, dword [0x1021358]
xor edx, edx
div ecx
mov ecx, dword [0x10049b0]
mov dword [eax*4 + 0x10430d4], 0xb4c4
jmp 0x101688b
call dword [0x100108c]
mov esi, eax
push 0x8000
push 0
push edi
call dword [0x1001054]
push esi
call dword [0x1001060]
mov eax, dword [ebp - 0xe8]
mov ecx, dword [ebp - 8]
pop edi
pop esi
pop ebx
xor ecx, ebp
call 0x1026f89
leave
ret 0xc