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

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x238
mov eax, dword [0x1041530]
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
push edi
mov dword [ebp - 0x190], eax
mov eax, dword [ebp + 0x10]
mov edi, ecx
cmp edi, ebx
mov dword [ebp - 0xe8], eax
mov ecx, 0xfffffff
mov dword [ebp - 0xd4], edi
jb 0x101d7a6
mov eax, dword [0x100003c]
mov eax, dword [eax + 0x1000050]
add eax, ebx
cmp edi, eax
jae 0x101cd76
mov esi, dword [0x10049a0]
and dword [ebp - 0xb8], 0
sub edi, ebx
dec esi
js 0x101c327
mov eax, dword [ebp - 0xb8]
add eax, esi
cdq
sub eax, edx
sar eax, 1
lea edx, [eax*8 + 0x1034efc]
mov dword [ebp - 0xf0], edx
mov edx, dword [edx]
shr edx, 1
and edx, ecx
cmp edi, edx
jae 0x101c312
lea esi, [eax - 1]
jmp 0x101c31f
jbe 0x101c4b6
inc eax
mov dword [ebp - 0xb8], eax
cmp esi, dword [ebp - 0xb8]
jge 0x101c2e9
xor eax, eax
test eax, eax
je 0x101cd70
mov esi, dword [eax]
mov edx, dword [eax + 4]
and esi, ecx
and edx, 7
lea edi, [edx + eax + 8]
lea eax, [esi + edi]
mov dword [ebp - 0xf0], eax
mov eax, dword [0x102543c]
mov dword [ebp - 0xbc], edi
sub eax, esi
sub dword [ebp - 0xbc], ebx
lea ecx, [eax + 1]
mov dword [ebp - 0xd4], edi
xor eax, eax
mov dword [ebp - 0xc0], esi
mov dword [ebp - 0xb8], ecx
test ecx, ecx
je 0x101c3a6
mov edx, dword [0x10410fc]
shr dword [ebp - 0xb8], 0x10
imul edx, edx, 0x343fd
add edx, 0x269ec3
mov dword [0x10410fc], edx
shr edx, 0x10
shl eax, 0x10
or eax, edx
cmp dword [ebp - 0xb8], 0
jne 0x101c376
xor edx, edx
div ecx
mov eax, dword [ebp - 0xe8]
push esi
add eax, edx
push dword [ebp - 0xbc]
mov dword [ebp - 0xe0], eax
mov eax, 0xd1875278
test esi, esi
mov eax, dword [ebp - 0xf0]
pop ecx
pop ecx
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x1a0], eax
mov eax, dword [ebp - 0xe0]
mov dword [ebp - 0x1a4], ecx
mov byte [ebp - 0xad], 0
mov dword [ebp - 0xec], esi
mov dword [ebp - 0xe8], edi
mov dword [ebp - 0xb4], eax
je 0x101cb9a
lea esi, [ebp - 0x1a4]
mov eax, 0x50ee8ccc
mov edx, dword [0x1004f44]
mov eax, 0xfffffff
mov edi, dword [ebp - 0x1a0]
mov esi, dword [ebp - 0x1a4]
and edi, eax
and esi, eax
xor ecx, ecx
add esi, ebx
mov eax, ebx
mov dword [ebp - 0xdc], ecx
mov dword [ebp - 0xd8], ecx
sub eax, edx
mov dword [ebp - 0xd0], edi
mov dword [ebp - 0x198], eax
jne 0x101c4d4
cmp edi, ecx
mov dword [ebp - 0xb8], ecx
jbe 0x101c763
mov ecx, 0x637ce67c
mov eax, dword [ebp - 0xb8]
movzx edx, byte [eax + esi]
add edx, ecx
add dword [ebp - 0xdc], edx
add edx, dword [ebp - 0xd8]
mov eax, edx
imul eax, eax, 0x3041
rol eax, 0xc
ror edx, 0xc
xor eax, edx
mov edx, ecx
mul edx
add eax, edx
mov edx, ecx
mul edx
add eax, edx
add dword [ebp - 0xdc], eax
inc dword [ebp - 0xb8]
mov dword [ebp - 0xd8], eax
cmp dword [ebp - 0xb8], edi
jb 0x101c463
jmp 0x101c763
mov eax, dword [ebp - 0xf0]
mov edx, dword [eax]
shr edx, 1
mov eax, dword [eax + 4]
and edx, ecx
and eax, 0x3f
lea eax, [eax + edx + 0x1000000]
jmp 0x101c329
lea eax, [esi + edi]
mov edx, dword [0x100003c]
mov dword [ebp - 0xf4], eax
mov ecx, esi
lea edx, [edx + 0x10000a0]
mov eax, dword [edx]
mov edx, dword [edx + 4]
mov dword [ebp - 0xe4], edx
sub ecx, ebx
mov edx, ecx
mov edi, ecx
and edx, 0xfffff000
sub edi, edx
mov dword [ebp - 0xb8], edi
mov edi, dword [ebp - 0xd0]
add ecx, edi
mov edi, ecx
and edi, 0xfffff000
sub ecx, edi
add eax, ebx
mov dword [ebp - 0x104], ecx
mov ecx, dword [ebp - 0xe4]
add ecx, eax
cmp eax, ecx
mov dword [ebp - 0x108], edi
mov edi, eax
mov dword [ebp - 0x100], ecx
je 0x101c54d
cmp dword [edi], edx
jae 0x101c54d
add edi, dword [edi + 4]
cmp edi, dword [ebp - 0x100]
jne 0x101c53e
and dword [ebp - 0xf8], 0
cmp edi, dword [ebp - 0x100]
je 0x101c58d
cmp dword [edi], edx
jne 0x101c58d
mov edx, dword [edi + 4]
sub edx, 8
shr edx, 1
je 0x101c58d
lea ecx, [edi + 8]
movzx eax, word [ecx]
and eax, 0xfff
cmp eax, dword [ebp - 0xb8]
jae 0x101c58d
inc dword [ebp - 0xf8]
inc ecx
inc ecx
cmp dword [ebp - 0xf8], edx
jne 0x101c56d
mov ecx, 0x637ce67c
cmp edi, dword [ebp - 0x100]
je 0x101c70e
mov eax, dword [edi]
cmp eax, dword [ebp - 0x108]
ja 0x101c70e
mov eax, dword [edi + 4]
add eax, 0xfffffff8
shr eax, 1
cmp dword [ebp - 0xf8], eax
jne 0x101c5e2
add edi, dword [edi + 4]
cmp edi, dword [ebp - 0x100]
je 0x101c70e
mov eax, dword [ebp - 0x108]
cmp dword [edi], eax
ja 0x101c70e
and dword [ebp - 0xf8], 0
jmp 0x101c5ac
mov eax, dword [ebp - 0x108]
cmp dword [edi], eax
jne 0x101c608
mov eax, dword [ebp - 0xf8]
movzx eax, word [edi + eax*2 + 8]
and eax, 0xfff
cmp eax, dword [ebp - 0x104]
jae 0x101c70e
mov eax, 0xf000
mov edx, dword [ebp - 0xf8]
inc dword [ebp - 0xf8]
test word [edi + edx*2 + 8], ax
je 0x101c592
movzx eax, word [edi + edx*2 + 8]
mov edx, dword [edi]
and dword [ebp - 0xb8], 0
and eax, 0xfff
lea eax, [eax + edx + 0x1000000]
mov dword [ebp - 0xe4], eax
sub dword [ebp - 0xe4], esi
mov dword [ebp - 0xd0], eax
je 0x101c6ac
mov eax, dword [ebp - 0xb8]
movzx edx, byte [eax + esi]
add edx, ecx
add dword [ebp - 0xdc], edx
add edx, dword [ebp - 0xd8]
mov eax, edx
imul eax, eax, 0x3041
rol eax, 0xc
ror edx, 0xc
xor eax, edx
mov edx, ecx
mul edx
add eax, edx
mov edx, ecx
mul edx
add eax, edx
add dword [ebp - 0xdc], eax
inc dword [ebp - 0xb8]
mov dword [ebp - 0xd8], eax
mov eax, dword [ebp - 0xb8]
cmp eax, dword [ebp - 0xe4]
jb 0x101c652
mov eax, dword [ebp - 0xd0]
mov eax, dword [eax]
sub eax, dword [ebp - 0x198]
xor esi, esi
mov dword [ebp - 0x1b0], eax
movzx edx, byte [ebp + esi - 0x1b0]
add edx, ecx
add dword [ebp - 0xdc], edx
add edx, dword [ebp - 0xd8]
mov eax, edx
imul eax, eax, 0x3041
rol eax, 0xc
ror edx, 0xc
xor eax, edx
mov edx, ecx
mul edx
add eax, edx
mov edx, ecx
mul edx
add eax, edx
add dword [ebp - 0xdc], eax
mov dword [ebp - 0xd8], eax
inc esi
cmp esi, 4
jb 0x101c6bc
mov esi, dword [ebp - 0xd0]
add esi, 4
jmp 0x101c592
mov eax, dword [ebp - 0xf4]
xor edi, edi
sub eax, esi
mov dword [ebp - 0xf4], eax
je 0x101c763
movzx edx, byte [edi + esi]
add edx, ecx
add dword [ebp - 0xdc], edx
add edx, dword [ebp - 0xd8]
mov eax, edx
imul eax, eax, 0x3041
rol eax, 0xc
ror edx, 0xc
xor eax, edx
mov edx, ecx
mul edx
add eax, edx
mov edx, ecx
mul edx
add eax, edx
add dword [ebp - 0xdc], eax
mov dword [ebp - 0xd8], eax
inc edi
cmp edi, dword [ebp - 0xf4]
jb 0x101c720
xor eax, eax
mov ecx, eax
and ecx, 7
mov cl, byte [ebp + ecx - 0xdc]
mov byte [ebp + eax - 0xac], cl
inc eax
cmp eax, 0x10
jb 0x101c765
mov eax, 0x308c1717
mov edx, dword [ebp - 0xa4]
mov ecx, dword [ebp - 0xa8]
mov esi, dword [ebp - 0xa0]
mov eax, dword [ebp - 0xac]
mov dword [ebp - 0x230], eax
mov dword [ebp - 0x208], eax
xor eax, eax
mov dword [ebp - 0x21c], eax
mov dword [ebp - 0x218], eax
mov dword [ebp - 0x214], eax
mov dword [ebp - 0x210], eax
mov eax, dword [0x101be7c]
mov dword [ebp - 0x234], eax
mov eax, dword [0x101be80]
mov dword [ebp - 0x220], eax
mov eax, dword [0x101be84]
mov dword [ebp - 0x20c], eax
mov eax, dword [0x101be88]
mov dword [ebp - 0x1f8], eax
mov eax, dword [ebp - 0xe0]
mov dword [ebp - 0x22c], ecx
mov dword [ebp - 0x204], ecx
lea ecx, [ebp - 0x4c]
sub eax, ecx
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp - 0xd4]
sub eax, dword [ebp - 0xe0]
mov dword [ebp - 0x228], edx
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x200], edx
mov dword [ebp - 0x1fc], esi
mov dword [ebp - 0xf4], eax
lea edi, [ebp - 0x14c]
push 0x10
lea esi, [ebp - 0x234]
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 - 0xd0], 2
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
mov edi, dword [ebp - 0x124]
ror edx, 0xe
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
ror edx, 0xe
mov edi, dword [ebp - 0x110]
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
rol edi, 0xd
mov edx, dword [ebp - 0x130]
xor dword [ebp - 0x120], edi
mov edi, dword [ebp - 0x120]
add edx, edi
ror edx, 0xe
mov edi, dword [ebp - 0x14c]
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
mov edx, dword [ebp - 0x130]
xor eax, edi
add edx, eax
ror edx, 0xe
mov edi, dword [ebp - 0x128]
xor dword [ebp - 0x138], edx
mov edx, dword [ebp - 0x124]
add edx, edi
rol edx, 7
xor dword [ebp - 0x120], edx
mov edi, dword [ebp - 0x120]
mov edx, dword [ebp - 0x124]
add edi, edx
mov edx, dword [ebp - 0x120]
rol edi, 9
xor ecx, edi
add edx, ecx
mov edi, dword [ebp - 0x114]
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 edi, dword [ebp - 0x114]
mov edx, dword [ebp - 0x118]
add edi, edx
ror edi, 0xe
xor dword [ebp - 0x110], edi
dec dword [ebp - 0xd0]
jne 0x101c861
mov dword [ebp - 0x13c], eax
xor eax, eax
mov dword [ebp - 0x11c], esi
mov dword [ebp - 0x12c], ecx
mov ecx, dword [ebp + eax - 0x234]
add dword [ebp + eax - 0x14c], ecx
add eax, 4
cmp eax, 0x40
jl 0x101cae5
lea esi, [ebp - 0x14c]
inc dword [ebp - 0x214]
push 0x10
pop ecx
lea edi, [ebp - 0x4c]
rep movsd dword es:[edi], dword [esi]
xor esi, esi
cmp dword [ebp - 0xec], 0x40
jbe 0x101cb63
mov edi, dword [ebp - 0xe4]
mov eax, dword [ebp - 0xf4]
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 0x101cb29
push 0x40
pop eax
sub dword [ebp - 0xec], eax
add dword [ebp - 0xb4], eax
add edi, eax
add dword [ebp - 0xe8], eax
mov dword [ebp - 0xe4], edi
jmp 0x101c834
cmp dword [ebp - 0xec], 0
jbe 0x101cb9a
lea eax, [ebp - 0x4c]
mov edx, dword [ebp - 0xb4]
mov edi, dword [ebp - 0xe8]
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 - 0xec]
jb 0x101cb7f
movzx eax, byte [ebp - 0xad]
mov ecx, dword [ebp - 0xf0]
movzx ecx, byte [ecx + 8]
sub eax, ecx
je 0x101cc52
call fcn.0100cd3b
mov esi, 0xffff
mov edi, eax
mov eax, 0xfffff000
mov edx, dword [ebp - 0x194]
mov dword [edx + 8], 0x1023648
lea ecx, [edx + 0xc]
mov dword [ebp - 0xb4], esi
and ecx, 0xfffffffc
and edi, eax
lea ebx, [ecx + 0xfff]
and ebx, eax
xor eax, eax
mov edx, dword [0x10410fc]
shr dword [ebp - 0xb4], 0x10
imul edx, edx, 0x343fd
add edx, 0x269ec3
mov dword [0x10410fc], edx
shr edx, 0x10
shl eax, 0x10
or eax, edx
cmp dword [ebp - 0xb4], 0
jne 0x101cbe9
xor edx, edx
div esi
mov eax, dword [ebp - 0x190]
mov dword [eax + 0x1c], edi
inc edx
cmp ecx, ebx
mov dword [eax], edx
mov eax, ecx
mov dword [ebp - 0xf4], 0
jae 0x101cc48
mov ecx, dword [ebp - 0xf4]
mov dword [eax], ecx
add eax, 4
cmp eax, ebx
jb 0x101cc39
mov eax, 0x1023648
jmp 0x101d83b
mov eax, dword [0x1004f44]
mov edi, dword [ebp - 0xd4]
sub edi, dword [ebp - 0xe0]
sub ebx, eax
mov dword [ebp - 0xf0], edi
mov dword [ebp - 0xd0], ebx
jne 0x101cc7b
test edi, edi
je 0x101cd5b
mov ecx, dword [ebp - 0xc0]
mov eax, dword [ebp - 0xbc]
mov esi, dword [ebp - 0xe0]
sub esi, dword [ebp - 0xd4]
add eax, ecx
mov ecx, dword [0x1009298]
mov dword [ebp - 0xc0], eax
xor ebx, ebx
dec ecx
js 0x101ccd7
lea eax, [ecx + ebx]
cdq
sub eax, edx
sar eax, 1
mov edx, dword [eax*4 + 0x100929c]
and edx, 0xfffffff
cmp dword [ebp - 0xbc], edx
jae 0x101ccc8
lea ecx, [eax - 1]
jmp 0x101cccd
jbe 0x101ccdf
lea ebx, [eax + 1]
cmp ecx, ebx
jge 0x101cca6
mov edi, dword [ebp - 0xf0]
mov dword [ebp - 0xbc], ebx
jmp 0x101cd4d
mov edi, dword [ebp - 0xf0]
mov dword [ebp - 0xbc], eax
jmp 0x101cd4d
mov eax, dword [ebp - 0xbc]
mov eax, dword [eax*4 + 0x100929c]
mov ecx, eax
and ecx, 0xfffffff
cmp ecx, dword [ebp - 0xc0]
jae 0x101cd5b
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 0x101cd39
dec ecx
je 0x101cd35
dec ecx
jne 0x101cd41
mov edx, dword [ebp - 0xd0]
jmp 0x101cd41
mov edx, edi
jmp 0x101cd41
mov edx, dword [ebp - 0xd0]
sub edx, edi
dec eax
dec eax
jne 0x101cd47
add dword [ebx], edx
inc dword [ebp - 0xbc]
mov eax, dword [ebp - 0xbc]
cmp eax, dword [0x1009298]
jb 0x101cced
mov eax, dword [0x102543c]
mov eax, 0x68b8fcb2
mov eax, dword [ebp - 0xe0]
jmp 0x101d83b
mov edi, dword [ebp - 0xd4]
cmp edi, ebx
jb 0x101d7a6
mov eax, dword [0x100003c]
mov eax, dword [eax + 0x1000050]
add eax, ebx
cmp dword [ebp - 0xd4], eax
jae 0x101d7a6
mov edi, dword [ebp - 0xd4]
mov esi, dword [0x1004f58]
and dword [ebp - 0xb4], 0
sub edi, ebx
dec esi
js 0x101cdec
mov eax, dword [ebp - 0xb4]
add eax, esi
cdq
sub eax, edx
sar eax, 1
lea edx, [eax*8 + 0x10363a8]
mov dword [ebp - 0xc0], edx
mov edx, dword [edx + 4]
and edx, ecx
cmp edi, edx
jae 0x101cdd7
lea esi, [eax - 1]
jmp 0x101cde4
jbe 0x101cf56
inc eax
mov dword [ebp - 0xb4], eax
cmp esi, dword [ebp - 0xb4]
jge 0x101cdaf
xor eax, eax
test eax, eax
je 0x101d7a6
mov esi, dword [eax + 4]
mov edx, dword [eax]
and edx, 7
and esi, ecx
lea edx, [edx + eax + 8]
lea eax, [edx + esi]
mov dword [ebp - 0xe4], eax
mov eax, dword [0x102543c]
sub eax, esi
mov dword [ebp - 0xbc], edx
lea ecx, [eax + 1]
sub dword [ebp - 0xbc], ebx
xor eax, eax
mov dword [ebp - 0xd4], edx
mov edx, ecx
mov dword [ebp - 0xd0], esi
test ecx, ecx
je 0x101ce5e
mov edi, dword [0x10410fc]
imul edi, edi, 0x343fd
add edi, 0x269ec3
mov dword [0x10410fc], edi
shr edi, 0x10
shl eax, 0x10
shr edx, 0x10
or eax, edi
test edx, edx
jne 0x101ce37
xor edx, edx
div ecx
mov eax, dword [ebp - 0xe8]
lea edi, [edx + eax]
mov eax, edi
push esi
push dword [ebp - 0xbc]
mov dword [ebp - 0xe8], edi
mov eax, 0x38108a95
mov eax, dword [ebp - 0xe4]
pop ecx
pop ecx
mov ecx, dword [eax]
test esi, esi
mov eax, dword [eax + 4]
mov dword [ebp - 0x1a8], eax
mov eax, dword [ebp - 0xd4]
mov dword [ebp - 0xe0], edi
mov edi, 0xfffff000
mov dword [ebp - 0x1ac], ecx
mov byte [ebp - 0xad], 0
mov dword [ebp - 0xec], esi
mov dword [ebp - 0xb8], eax
je 0x101d5f7
lea esi, [ebp - 0x1ac]
mov eax, 0x7c7abff5
mov eax, 0xfffffff
mov esi, dword [ebp - 0x1ac]
mov ecx, dword [0x1004f44]
mov edx, dword [ebp - 0x1a8]
and dword [ebp - 0xcc], 0
and dword [ebp - 0xc8], 0
and esi, eax
and edx, eax
mov eax, ebx
add esi, ebx
sub eax, ecx
mov dword [ebp - 0xf4], eax
jne 0x101cf72
xor edi, edi
test edx, edx
jbe 0x101d1cf
mov ebx, 0x1bbd2d76
movzx ecx, byte [edi + esi]
sub ecx, ebx
add dword [ebp - 0xcc], ecx
add ecx, dword [ebp - 0xc8]
mov eax, ecx
imul eax, eax, 0xfb82
rol eax, 0xa
ror ecx, 0xa
xor eax, ecx
imul eax, eax, 0xe442d28a
ror eax, 2
add dword [ebp - 0xcc], eax
inc edi
cmp edi, edx
mov dword [ebp - 0xc8], eax
jb 0x101cf15
jmp 0x101d1cf
mov eax, dword [ebp - 0xc0]
mov edx, dword [eax + 4]
and edx, ecx
mov eax, dword [eax]
and eax, 0x3f
lea eax, [eax + edx + 0x1000000]
jmp 0x101cdee
mov ecx, esi
lea eax, [edx + esi]
mov dword [ebp - 0x198], eax
mov eax, dword [0x100003c]
lea eax, [eax + 0x10000a0]
mov dword [ebp - 0xc0], eax
mov eax, dword [eax]
add eax, ebx
sub ecx, ebx
mov ebx, dword [ebp - 0xc0]
mov ebx, dword [ebx + 4]
mov dword [ebp - 0xc0], ebx
mov ebx, ecx
and ebx, edi
mov dword [ebp - 0xb4], ebx
mov ebx, ecx
sub ebx, dword [ebp - 0xb4]
add ecx, edx
mov edx, ecx
and edx, edi
sub ecx, edx
mov dword [ebp - 0x104], ecx
mov ecx, dword [ebp - 0xc0]
mov dword [ebp - 0x108], edx
add ecx, eax
mov dword [ebp - 0x100], ecx
jmp 0x101cfe6
mov edi, dword [ebp - 0xb4]
cmp dword [eax], edi
jae 0x101cfea
add eax, dword [eax + 4]
cmp eax, ecx
jne 0x101cfd9
and dword [ebp - 0xf8], 0
cmp eax, ecx
je 0x101d03a
mov ecx, dword [ebp - 0xb4]
cmp dword [eax], ecx
jne 0x101d03a
mov ecx, dword [eax + 4]
sub ecx, 8
shr ecx, 1
je 0x101d03a
lea edi, [eax + 8]
mov dword [ebp - 0xb4], edi
mov edi, dword [ebp - 0xb4]
movzx edi, word [edi]
and edi, 0xfff
cmp edi, ebx
jae 0x101d03a
inc dword [ebp - 0xf8]
add dword [ebp - 0xb4], 2
cmp dword [ebp - 0xf8], ecx
jne 0x101d012
mov ebx, 0x1bbd2d76
cmp eax, dword [ebp - 0x100]
je 0x101d187
cmp dword [eax], edx
ja 0x101d187
mov ecx, dword [eax + 4]
lea edi, [ecx - 8]
shr edi, 1
mov ecx, dword [ebp - 0xf8]
cmp ecx, edi
jne 0x101d085
add eax, dword [eax + 4]
cmp eax, dword [ebp - 0x100]
je 0x101d187
cmp dword [eax], edx
ja 0x101d187
and dword [ebp - 0xf8], 0
jmp 0x101d053
cmp dword [eax], edx
jne 0x101d0a0
movzx ecx, word [eax + ecx*2 + 8]
and ecx, 0xfff
cmp ecx, dword [ebp - 0x104]
jae 0x101d187
mov ecx, dword [ebp - 0xf8]
inc dword [ebp - 0xf8]
mov edi, 0xf000
test word [eax + ecx*2 + 8], di
je 0x101d03f
movzx edx, word [eax + ecx*2 + 8]
mov ecx, dword [eax]
and edx, 0xfff
lea edx, [edx + ecx + 0x1000000]
xor ecx, ecx
mov dword [ebp - 0xb4], edx
sub dword [ebp - 0xb4], esi
mov dword [ebp - 0xc0], edx
je 0x101d122
movzx edi, byte [ecx + esi]
sub edi, ebx
add dword [ebp - 0xcc], edi
add edi, dword [ebp - 0xc8]
mov edx, edi
imul edx, edx, 0xfb82
rol edx, 0xa
ror edi, 0xa
xor edx, edi
imul edx, edx, 0xe442d28a
ror edx, 2
add dword [ebp - 0xcc], edx
mov dword [ebp - 0xc8], edx
inc ecx
cmp ecx, dword [ebp - 0xb4]
jb 0x101d0e2
mov edi, dword [ebp - 0xc0]
mov ecx, dword [edi]
sub ecx, dword [ebp - 0xf4]
mov dword [ebp - 0x19c], ecx
xor ecx, ecx
movzx esi, byte [ebp + ecx - 0x19c]
sub esi, ebx
add dword [ebp - 0xcc], esi
add esi, dword [ebp - 0xc8]
mov edx, esi
imul edx, edx, 0xfb82
rol edx, 0xa
ror esi, 0xa
xor edx, esi
imul edx, edx, 0xe442d28a
ror edx, 2
add dword [ebp - 0xcc], edx
inc ecx
mov dword [ebp - 0xc8], edx
cmp ecx, 4
jb 0x101d138
lea esi, [edi + 4]
mov edx, dword [ebp - 0x108]
jmp 0x101d03f
xor edx, edx
mov edi, dword [ebp - 0x198]
sub edi, esi
je 0x101d1cf
movzx ecx, byte [esi + edx]
sub ecx, ebx
add dword [ebp - 0xcc], ecx
add ecx, dword [ebp - 0xc8]
mov eax, ecx
imul eax, eax, 0xfb82
rol eax, 0xa
ror ecx, 0xa
xor eax, ecx
imul eax, eax, 0xe442d28a
ror eax, 2
add dword [ebp - 0xcc], eax
mov dword [ebp - 0xc8], eax
inc edx
cmp edx, edi
jb 0x101d193
xor eax, eax
mov ecx, eax
and ecx, 7
mov cl, byte [ebp + ecx - 0xcc]
mov byte [ebp + eax - 0x9c], cl
inc eax
cmp eax, 0x10
jb 0x101d1d1
mov eax, 0x8c12a2bc
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x9c]
mov ecx, dword [ebp - 0x98]
mov esi, dword [ebp - 0x90]
mov dword [ebp - 0x1f0], eax
mov dword [ebp - 0x1c8], eax
xor eax, eax
mov dword [ebp - 0x1dc], eax
mov dword [ebp - 0x1d8], eax
mov dword [ebp - 0x1d4], eax
mov dword [ebp - 0x1d0], eax
mov eax, dword [0x101be7c]
mov dword [ebp - 0x1f4], eax
mov eax, dword [0x101be80]
mov dword [ebp - 0x1e0], eax
mov eax, dword [0x101be84]
mov dword [ebp - 0x1cc], eax
mov eax, dword [0x101be88]
mov dword [ebp - 0x1b8], eax
lea eax, [ebp - 0x8c]
sub eax, dword [ebp - 0xd4]
mov dword [ebp - 0x1ec], ecx
mov dword [ebp - 0x1e8], edx
mov dword [ebp - 0x1e4], esi
mov dword [ebp - 0x1c4], ecx
mov dword [ebp - 0x1c0], edx
mov dword [ebp - 0x1bc], esi
mov dword [ebp - 0xb4], eax
push 0x10
lea edi, [ebp - 0x18c]
pop ecx
lea esi, [ebp - 0x1f4]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x18c]
mov eax, dword [ebp - 0x17c]
mov ecx, dword [ebp - 0x16c]
mov edx, dword [ebp - 0x15c]
mov dword [ebp - 0xf0], 2
lea edi, [esi + edx]
rol edi, 7
xor eax, edi
lea edi, [esi + eax]
mov ebx, dword [ebp - 0x178]
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
rol ebx, 0xd
mov edi, dword [ebp - 0x158]
xor dword [ebp - 0x188], ebx
mov ebx, dword [ebp - 0x188]
add edi, ebx
ror edi, 0xe
mov ebx, dword [ebp - 0x164]
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
mov ebx, dword [ebp - 0x150]
ror edi, 0xe
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 ebx, dword [ebp - 0x174]
mov edi, dword [ebp - 0x178]
add ebx, edi
mov edi, dword [ebp - 0x174]
rol ebx, 9
xor dword [ebp - 0x170], ebx
mov ebx, dword [ebp - 0x170]
add ebx, edi
mov edi, dword [ebp - 0x170]
rol ebx, 0xd
xor eax, ebx
add edi, eax
mov ebx, dword [ebp - 0x168]
ror edi, 0xe
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 - 0xf0]
jne 0x101d2c2
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 - 0x1f4]
add dword [ebp + eax - 0x18c], ecx
add eax, 4
cmp eax, edx
jl 0x101d537
lea esi, [ebp - 0x18c]
inc dword [ebp - 0x1d4]
lea edi, [ebp - 0x8c]
push 0x10
pop ecx
rep movsd dword es:[edi], dword [esi]
cmp dword [ebp - 0xec], edx
jbe 0x101d5b0
mov esi, dword [ebp - 0xe0]
mov ecx, dword [ebp - 0xb8]
mov edi, edx
sub esi, ecx
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 0x101d57b
sub dword [ebp - 0xec], edx
add dword [ebp - 0xe0], edx
add dword [ebp - 0xb8], edx
sub dword [ebp - 0xb4], edx
jmp 0x101d28f
cmp dword [ebp - 0xec], 0
jbe 0x101d5e7
mov edx, dword [ebp - 0xec]
lea esi, [ebp - 0x8c]
mov ecx, dword [ebp - 0xb8]
sub esi, ecx
mov edi, dword [ebp - 0xe0]
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 0x101d5d5
mov ebx, 0x1000000
mov esi, dword [ebp - 0xd0]
mov edi, 0xfffff000
mov ecx, dword [ebp - 0xe4]
movzx eax, byte [ebp - 0xad]
movzx ecx, byte [ecx + 8]
sub eax, ecx
je 0x101d6ae
call fcn.0100cd3b
mov esi, 0xffff
and eax, edi
mov dword [ebp - 0xc0], eax
mov eax, dword [ebp - 0x194]
lea ecx, [eax + 0xc]
and ecx, 0xfffffffc
lea ebx, [ecx + 0xfff]
and ebx, edi
mov edi, 0x1023648
mov dword [eax + 8], edi
xor eax, eax
mov dword [ebp - 0xb4], esi
mov edx, dword [0x10410fc]
shr dword [ebp - 0xb4], 0x10
imul edx, edx, 0x343fd
add edx, 0x269ec3
mov dword [0x10410fc], edx
shr edx, 0x10
shl eax, 0x10
or eax, edx
cmp dword [ebp - 0xb4], 0
jne 0x101d646
xor edx, edx
div esi
inc edx
mov eax, dword [ebp - 0x190]
mov dword [eax], edx
mov edx, dword [ebp - 0xc0]
mov dword [eax + 0x1c], edx
mov dword [ebp - 0xc0], 0
jmp 0x101d6a3
mov eax, dword [ebp - 0xc0]
mov dword [ecx], eax
add ecx, 4
cmp ecx, ebx
jb 0x101d698
mov eax, edi
jmp 0x101d83b
mov eax, dword [ebp - 0xd4]
mov ecx, dword [0x1004f44]
sub eax, dword [ebp - 0xe8]
sub ebx, ecx
mov dword [ebp - 0x194], eax
mov dword [ebp - 0x190], ebx
jne 0x101d6d8
test eax, eax
je 0x101d791
mov ecx, dword [0x1009298]
mov ebx, dword [ebp - 0xe8]
mov edi, dword [ebp - 0xbc]
sub ebx, dword [ebp - 0xd4]
add esi, edi
mov dword [ebp - 0x19c], esi
xor esi, esi
dec ecx
js 0x101d724
lea eax, [ecx + esi]
cdq
sub eax, edx
sar eax, 1
mov edx, dword [eax*4 + 0x100929c]
and edx, 0xfffffff
cmp edi, edx
jae 0x101d71b
lea ecx, [eax - 1]
jmp 0x101d720
jbe 0x101d728
lea esi, [eax + 1]
cmp ecx, esi
jge 0x101d6fd
mov edi, esi
jmp 0x101d789
mov edi, eax
jmp 0x101d789
mov eax, dword [edi*4 + 0x100929c]
mov ecx, eax
and ecx, 0xfffffff
cmp ecx, dword [ebp - 0x19c]
jae 0x101d791
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 0x101d776
dec ecx
je 0x101d76e
dec ecx
jne 0x101d782
mov edx, dword [ebp - 0x190]
jmp 0x101d782
mov edx, dword [ebp - 0x194]
jmp 0x101d782
mov edx, dword [ebp - 0x190]
sub edx, dword [ebp - 0x194]
dec eax
dec eax
jne 0x101d788
add dword [esi], edx
inc edi
cmp edi, dword [0x1009298]
jb 0x101d72c
mov eax, dword [0x102543c]
mov eax, 0x16fb53cc
mov eax, dword [ebp - 0xe8]
jmp 0x101d83b
mov eax, 0x2118aadb
mov esi, 0x1038008
mov edi, dword [ebp - 0xe8]
cmp edi, esi
jb 0x101d7f1
mov ecx, dword [0x102543c]
mov eax, dword [0x101a35c]
imul eax, ecx
lea eax, [eax + 0x1038008]
cmp edi, eax
jae 0x101d7f1
mov ecx, dword [0x102543c]
mov eax, edi
sub eax, esi
xor edx, edx
div ecx
mov ecx, dword [0x102543c]
imul ecx, eax
lea ecx, [ecx + 0x1038008]
jmp 0x101d7f3
xor ecx, ecx
test ecx, ecx
je 0x101d818
mov ecx, dword [0x102543c]
mov eax, edi
sub eax, esi
xor edx, edx
div ecx
mov ecx, dword [0x101a35c]
mov dword [eax*4 + 0x1042454], 0xe941
jmp 0x101d835
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
push 0x8000
push 0
push edi
call dword [sym.imp.KERNEL32.dll_VirtualFree]
push esi
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, dword [ebp - 0xd4]
mov ecx, dword [ebp - 8]
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.01009284
leave
ret 0xc