Function at 0x10165ca0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x398
mov eax, dword [0x11ad127c]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0x28]
push ebx
push esi
push edi
mov edi, dword [ebp + 0x14]
mov esi, ecx
mov dword [ebp - 0x388], eax
mov eax, dword [ebp + 0x40]
push 0x10
push 0x400
mov dword [ebp - 0x37c], esi
mov dword [ebp - 0x38c], edi
mov dword [ebp - 0x36c], eax
call fcn.10434a32
mov ebx, eax
add esp, 8
xor eax, eax
mov dword [ebp - 0x360], ebx
test ebx, ebx
je 0x101667c6
mov dword [edi + 0x350], eax
mov word [edi + 0x344], ax
mov dword [edi + 0x354], eax
mov edx, dword [esi + 8]
mov dword [ebp - 0x368], eax
test edx, edx
je 0x10165e3e
xor ebx, ebx
movzx eax, word [edx + 0x10]
movsx ecx, ax
sub ecx, 0x15
je 0x10165d31
sub ecx, 1
jne 0x10165d37
mov dword [edx], 1
cmp ax, 0x17
je 0x10165d8f
cmp ax, 0x18
je 0x10165d8f
cmp ax, 0x19
je 0x10165d8f
cmp ax, 0x33
je 0x10165d8f
cmp ax, 0x34
je 0x10165d8f
cmp ax, 0x31
je 0x10165d8f
cmp ax, 0x46
je 0x10165d8f
cmp ax, 0x47
je 0x10165d8f
cmp ax, 0x49
je 0x10165d8f
cmp ax, 0x6d
je 0x10165d8f
cmp ax, 0x70
je 0x10165d8f
cmp ax, 0x75
je 0x10165d8f
cmp ax, 0x71
je 0x10165d8f
cmp ax, 0x7f
jne 0x10165e24
mov al, byte [edx + 0x12]
movzx ecx, al
mov byte [ebp - 0x361], al
inc ecx
movzx eax, word [edi + 0x344]
cmp eax, ecx
jae 0x10165db7
movzx eax, byte [ebp - 0x361]
inc ax
mov word [edi + 0x344], ax
mov cl, byte [edx + 0x12]
mov eax, 0x10000
shl eax, cl
or dword [edi + 0x350], eax
movzx eax, byte [edx + 0x12]
bts ebx, eax
mov dword [esi + 0xf8], ebx
movsx eax, byte [edx + 0x15]
dec eax
cmp eax, 6
ja case.0x10165dde.1
jmp dword [eax*4 + 0x101667dc]
movzx ecx, byte [edx + 0x12]
mov eax, 2
add ecx, ecx
shl eax, cl
or dword [edi + 0x354], eax
jmp 0x10165e24
movzx ecx, byte [edx + 0x12]
mov eax, 3
add ecx, ecx
shl eax, cl
or dword [edi + 0x354], eax
jmp 0x10165e24
movzx ecx, byte [edx + 0x12]
mov eax, dword [edi + 0x354]
add ecx, ecx
bts eax, ecx
mov dword [edi + 0x354], eax
mov edx, dword [edx + 0xa4]
test edx, edx
jne 0x10165d20
mov dword [ebp - 0x368], ebx
mov ebx, dword [ebp - 0x360]
mov ax, word [edi + 0x344]
mov word [edi + 0x346], ax
mov eax, dword [0x11d0d80c]
mov eax, dword [eax + 8]
call eax
push eax
call fcn.10450898
mov esi, eax
add esp, 4
mov dword [ebp - 0x398], esi
test esi, esi
je 0x101667b6
mov ecx, dword [0x11d0d80c]
push esi
mov ecx, dword [ecx + 4]
call ecx
mov eax, dword [0x11d0d80c]
push esi
push ebx
mov eax, dword [eax + 0x14]
call eax
mov eax, dword fs:[0x2c]
mov ecx, dword [0x11d0c5b8]
mov dword [esi + 0x1c], 9
mov dword [esi + 0x20], 0
mov byte [esi + 0x24], 1
mov ecx, dword [eax + ecx*4]
mov dword [esi + 0x80], 0xffffffff
mov dword [esi + 0x84], 0xffffffff
mov dword [ebp - 0x390], eax
mov eax, dword [ecx + 0x10]
mov dword [ebp - 0x384], ecx
mov eax, dword [eax + 0x354]
mov dword [esi + 0x74], eax
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 0x1538]
test eax, eax
je 0x101667b6
mov dword [esi + 0x70], eax
mov dword [esi + 0x34], 9
mov eax, dword [ecx + 0x10]
mov al, byte [eax + 0xd2a5]
shr al, 5
and al, 1
mov byte [esi + 0x60], al
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 0xd36c]
mov dword [esi + 0x64], eax
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 0xd374]
mov dword [esi + 0x68], eax
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 0xd35c]
mov dword [esi + 0x6c], eax
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 0x344]
mov dword [esi + 0x78], eax
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 0xd378]
mov dword [esi + 0xd0], eax
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 0xd364]
mov dword [esi + 0x90], eax
mov ecx, dword [ecx + 0x10]
mov eax, dword [ecx + 0xd480]
mov edx, dword [ecx + 0xd488]
shr eax, 4
mov dword [ebp - 0x370], eax
mov eax, edx
or eax, dword [ecx + 0xd48c]
je 0x10165fa2
cmp dword [ebp + 0x34], edx
mov edx, dword [ebp + 0x38]
jne 0x10165f9e
cmp edx, dword [ecx + 0xd48c]
je 0x10165fa5
xor al, al
jmp 0x10165fa7
mov edx, dword [ebp + 0x38]
mov al, 1
mov ebx, dword [ebp - 0x370]
test bl, al
je 0x10165fb9
mov eax, dword [ecx + 0xd47c]
jmp 0x10165fbb
xor eax, eax
mov ebx, dword [ebp - 0x360]
mov ecx, dword [ebp - 0x37c]
mov dword [esi + 0x7c], eax
mov eax, dword [ebp + 0x34]
mov dword [esi + 0xa0], eax
mov dword [esi + 0xa4], edx
movzx eax, byte [edi + 0x320]
mov edx, dword [ebp - 0x36c]
and eax, 1
mov esi, dword [ebp - 0x388]
mov dword [ebx + 0x178], eax
mov dword [ebx + 0xec], 0x20
mov eax, dword [ecx + 8]
mov dword [ebp - 0x378], 0
mov dword [ebp - 0x394], 0
mov dword [ebp - 0x380], 0
mov dword [ebx + 4], eax
mov eax, dword [ecx + 8]
push edx
push dword [ebp + 0x3c]
mov dword [ebx + 8], eax
lea eax, [ebp - 0x380]
mov dword [ebx + 0xc], eax
mov dword [ebx + 0x10], eax
lea eax, [edx + 0x1ec]
push esi
push edi
mov dword [ebx + 0x14], 0x10
mov dword [ebx + 0x1c], edx
mov dword [ebx + 0x24], eax
call fcn.10165680
mov dword [ebx + 0x4c], 0x40000
lea eax, [ebp - 0x10c]
mov ecx, 0x10
nop word [eax + eax]
mov dword [eax], 0xc
lea eax, [eax + 0xc]
mov dword [eax - 8], 0
mov byte [eax - 4], 0
sub ecx, 1
jne 0x10166070
lea eax, [ebp - 0x10c]
xor edx, edx
push eax
push esi
mov dword [ebx + 0x34], eax
lea ecx, [edx + 0x10]
call fcn.10062e90
push 0x140
mov dword [ebx + 0x30], eax
lea eax, [ebp - 0x34c]
push 0
push eax
mov dword [ebx + 0x44], 0x10
mov dword [ebx + 0x48], 0x10
call fcn.10425c00
add esp, 0xc
lea eax, [ebp - 0x34c]
mov dword [ebx + 0xd0], eax
lea eax, [ebp - 0x4c]
push 0x40
push 0
push eax
call fcn.10425c00
lea eax, [ebp - 0x4c]
add esp, 0xc
mov dword [ebx + 0xd4], eax
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 4]
movzx ecx, ax
shr eax, 0x10
mov dword [ebp - 0x370], ecx
mov dword [ebp - 0x360], eax
test ecx, ecx
je 0x101661ef
xor esi, esi
mov dword [ebp - 0x36c], 0
mov dword [ebp - 0x374], esi
nop dword [eax]
mov ecx, dword [ebx + 0xd0]
mov edi, dword [ebp - 0x370]
and edi, 1
mov eax, dword [esi + ecx + 8]
and eax, 0xfffffff9
or eax, 1
mov dword [esi + ecx + 8], eax
lea eax, [edi*8]
mov edx, dword [ebx + 0xd0]
mov ecx, dword [esi + edx + 8]
and ecx, 0xfffffff7
or ecx, eax
mov dword [esi + edx + 8], ecx
mov edx, dword [ebx + 0xd0]
mov ecx, dword [ebp - 0x374]
mov esi, dword [ebp - 0x360]
and esi, 1
shr dword [ebp - 0x360], 1
mov eax, esi
mov ecx, dword [ecx + edx + 8]
shl eax, 4
and ecx, 0xffffffef
or ecx, eax
mov eax, dword [ebp - 0x374]
mov dword [eax + edx + 8], ecx
mov ecx, dword [ebx + 0xd4]
mov eax, dword [ebp - 0x36c]
mov eax, dword [eax + ecx]
and eax, 0xfffffffe
or eax, edi
mov edi, dword [ebp - 0x36c]
mov dword [edi + ecx], eax
lea eax, [esi + esi]
mov edx, dword [ebx + 0xd4]
mov esi, dword [ebp - 0x374]
add esi, 0x14
mov dword [ebp - 0x374], esi
mov ecx, dword [edi + edx]
and ecx, 0xfffffffd
or ecx, eax
mov eax, dword [ebp - 0x370]
shr eax, 1
mov dword [edi + edx], ecx
add edi, 4
mov dword [ebp - 0x36c], edi
mov dword [ebp - 0x370], eax
test eax, eax
jne 0x10166120
mov edi, dword [ebp - 0x38c]
mov eax, dword [ebp + 0x1c]
movzx esi, word [eax + 8]
test esi, esi
je 0x10166220
xor edx, edx
nop dword [eax]
mov ecx, dword [ebx + 0xd0]
lea edx, [edx + 0x14]
mov eax, esi
shl eax, 5
xor eax, dword [edx + ecx - 0xc]
and eax, 0x20
xor dword [edx + ecx - 0xc], eax
shr esi, 1
jne 0x10166200
mov eax, dword [ebp + 0x1c]
movzx esi, word [eax + 0xa]
test esi, esi
je 0x10166252
xor edx, edx
nop word [eax + eax]
mov ecx, dword [ebx + 0xd4]
lea eax, [esi*4]
lea edx, [edx + 4]
xor eax, dword [edx + ecx - 4]
and eax, 4
xor dword [edx + ecx - 4], eax
shr esi, 1
jne 0x10166230
mov eax, dword [ebp + 0x1c]
movzx esi, word [eax + 0xc]
test esi, esi
je 0x10166282
xor edx, edx
nop dword [eax]
mov ecx, dword [ebx + 0xd4]
lea eax, [esi*8]
lea edx, [edx + 4]
xor eax, dword [edx + ecx - 4]
and eax, 8
xor dword [edx + ecx - 4], eax
shr esi, 1
jne 0x10166260
mov eax, dword [ebp + 0x1c]
movzx esi, word [eax + 0xe]
test esi, esi
je 0x101662ad
xor edx, edx
nop dword [eax]
mov ecx, dword [ebx + 0xd4]
lea edx, [edx + 4]
mov eax, esi
shl eax, 4
xor eax, dword [edx + ecx - 4]
and eax, 0x10
xor dword [edx + ecx - 4], eax
shr esi, 1
jne 0x10166290
push 0x100
lea eax, [ebp - 0x20c]
push 0
push eax
call fcn.10425c00
mov esi, dword [ebp - 0x384]
add esp, 0xc
mov dword [ebx + 0xd8], 0
mov dword [ebx + 0xdc], 0
mov eax, dword [esi + 0x10]
test dword [eax + 0x190], 0x3fff00
je 0x101663a7
mov ecx, dword [ebp - 0x368]
mov eax, ecx
shr eax, 1
and eax, 0x55555555
sub ecx, eax
mov edx, ecx
and ecx, 0x33333333
shr edx, 2
and edx, 0x33333333
add edx, ecx
mov eax, edx
shr eax, 4
add eax, edx
and eax, 0xf0f0f0f
imul eax, eax, 0x1010101
shr eax, 0x18
test eax, eax
je 0x101663a7
lea ecx, [ebp - 0x20c]
mov dword [ebx + 0xd8], eax
mov eax, dword [ebp - 0x368]
xor edx, edx
mov dword [ebx + 0xdc], ecx
xor esi, esi
test eax, eax
je 0x101663a1
test al, 1
je 0x10166393
mov eax, dword [ebx + 0xdc]
lea ecx, [edx*4]
mov dword [esi + eax + 4], ecx
mov eax, dword [ebx + 0xdc]
mov dword [esi + eax + 8], edx
mov eax, dword [ebx + 0xdc]
mov dword [esi + eax + 0xc], edx
mov eax, dword [ebx + 0xdc]
mov dword [esi + eax], 8
add esi, 0x10
mov eax, dword [ebp - 0x368]
shr eax, 1
inc edx
mov dword [ebp - 0x368], eax
cmp edx, 0x10
jb 0x10166350
mov esi, dword [ebp - 0x384]
mov eax, dword [ebp + 0x20]
mov dword [ebx + 0xa0], eax
mov eax, dword [ebp - 0x37c]
mov dword [ebx + 0x54], 0x1008a630
mov dword [ebx + 0x58], 0x1008a610
mov dword [ebx + 0x5c], 0
mov dword [ebx + 0x60], 0
mov eax, dword [eax + 0x218]
mov dword [ebx + 0x2e0], eax
movzx eax, byte [ebp + 0x24]
mov dword [ebx + 0x2e4], eax
lea eax, [ebp - 0x35c]
mov dword [ebx + 0x36c], eax
mov dword [ebx + 0x38c], 0
mov dword [ebx + 0x370], 0x41200000
mov dword [ebx + 0x68], 0
mov dword [ebx + 0xa4], 0
mov dword [ebx + 0xa8], 0
mov dword [ebx + 0xac], 0
mov dword [ebx + 0x3b4], 0
mov eax, dword [esi + 0x10]
mov eax, dword [eax + 0xd37c]
sub eax, 0
je 0x101664d7
sub eax, 1
je 0x1016647d
sub eax, 1
jne 0x101664d7
mov dword [ebx + 0x70], eax
mov dword [ebx + 0x374], eax
mov dword [ebx + 0x74], eax
mov dword [ebx + 0x78], eax
mov dword [ebx + 0x7c], eax
mov dword [ebx + 0x84], eax
mov dword [ebx + 0x80], eax
jmp 0x10166511
mov dword [ebx + 0x378], 1
mov dword [ebx + 0x70], 1
mov dword [ebx + 0x374], 1
mov dword [ebx + 0x74], 1
mov dword [ebx + 0x78], 1
mov dword [ebx + 0x7c], 1
mov dword [ebx + 0x84], 1
mov dword [ebx + 0x80], 1
mov dword [ebx + 0x37c], 1
mov dword [ebx + 0x380], 1
jmp 0x1016652f
mov dword [ebx + 0x70], 1
mov dword [ebx + 0x374], 1
mov dword [ebx + 0x74], 1
mov dword [ebx + 0x78], 1
mov dword [ebx + 0x7c], 1
mov dword [ebx + 0x84], 1
mov dword [ebx + 0x80], 1
mov dword [ebx + 0x380], 0
mov dword [ebx + 0x37c], 0
mov dword [ebx + 0x378], 0
mov dword [ebx + 0x384], 1
mov dword [ebx + 0x388], 0
mov dword [ebx + 0x98], 0
mov dword [ebx + 0x3e0], 0
mov dword [ebx + 0x3f4], 0
mov dword [ebx + 0x120], 0
mov dword [ebx + 0x3f0], 1
mov dword [ebx + 0x2b4], 0
mov eax, dword [esi + 0x10]
mov eax, dword [eax + 0xd314]
mov dword [ebx + 0x104], eax
mov eax, dword [esi + 0x10]
movzx eax, byte [eax + 0xd29f]
shr eax, 3
not eax
and eax, 1
mov dword [ebx + 0x124], eax
mov eax, dword [esi + 0x10]
mov eax, dword [eax + 0xd464]
mov dword [ebx + 0xfc], eax
mov eax, dword [esi + 0x10]
mov eax, dword [eax + 0xd2b0]
mov dword [ebx + 0x50], eax
mov eax, dword [esi + 0x10]
mov eax, dword [eax + 0xd578]
test eax, eax
je 0x101665e2
add eax, 0xc
jmp 0x101665e7
mov eax, 0x10469160
mov dword [ebx + 0x220], eax
mov eax, dword [esi + 0x10]
mov eax, dword [eax + 0x140]
shr eax, 0xc
and eax, 1
mov dword [ebx + 0x2b0], eax
movaps xmm0, xmmword [0x1122e140]
movups xmmword [ebx + 0xb0], xmm0
movups xmmword [ebx + 0xc0], xmm0
mov dword [ebx + 0x184], 8
mov dword [ebx + 0x134], 2
mov dl, byte [edi + 0x308]
test dl, 2
je 0x10166716
mov ecx, dword [0x11d0c5b8]
mov eax, dword [ebp - 0x390]
mov eax, dword [eax + ecx*4]
mov ecx, dword [eax + 0x10]
movzx eax, dl
add ecx, 0x8180
shr eax, 2
and eax, 1
push eax
push ebx
call fcn.1013e0b0
test eax, eax
je 0x10166679
mov dword [edi + 0x300], eax
mov esi, 2
jmp 0x101666e5
mov ecx, dword [ebp - 0x378]
xor eax, eax
mov dword [ebp - 0x360], eax
cmp eax, 1
jne 0x101666df
push ecx
push edi
mov edi, dword [ebp - 0x37c]
push ecx
mov ecx, edi
call fcn.10063b80
push dword [ebp - 0x388]
mov esi, dword [edi + 0x50]
mov ecx, edi
call fcn.10062b90
mov dl, al
mov ecx, esi
call fcn.10165550
mov ecx, dword [esi]
mov al, byte [edi + 0x1b0]
and al, 0x7f
shr ecx, 0xe
shl cl, 7
or cl, al
mov byte [edi + 0x1b0], cl
mov al, byte [esi + 2]
shl al, 6
xor al, cl
and al, 0x40
xor al, cl
mov byte [edi + 0x1b0], al
mov esi, dword [ebp - 0x360]
push dword [ebp - 0x398]
call fcn.10450877
add esp, 4
push 0x400
push ebx
call fcn.1045088a
add esp, 8
mov eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.1045066c
mov esp, ebp
pop ebp
ret 0x3c
test byte [0x11cd362c], 1
je 0x10166775
cmp dword [0x11cd3624], 0
jne 0x10166736
mov ecx, 0x11cd3610
call fcn.100f5b00
test al, al
je 0x10166775
mov edx, dword [0x11cd3618]
xor eax, eax
mov esi, dword [0x11cd3614]
test edx, edx
je 0x10166775
lea ecx, [esi + 4]
nop dword [eax + eax]
cmp dword [ecx], 0x107ed500
je 0x10166762
inc eax
add ecx, 0x10
cmp eax, edx
jb 0x10166750
jmp 0x10166775
add eax, eax
cmp dword [esi + eax*8 + 0xc], 0
je 0x10166775
mov dword [ebx + 0x294], 1
mov eax, dword [0x11d0d80c]
lea ecx, [ebp - 0x378]
push 0
push 0
push 0
mov eax, dword [eax]
push 0
push ebx
push ecx
lea ecx, [ebp - 0x394]
push ecx
call eax
mov ecx, dword [ebp - 0x378]
neg eax
sbb eax, eax
neg eax
mov dword [ebp - 0x360], eax
test ecx, ecx
jne 0x10166687
xor esi, esi
jmp 0x101666e5
push 0x400
push ebx
call fcn.1045088a
add esp, 8
xor eax, eax
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1045066c
mov esp, ebp
pop ebp
ret 0x3c