Function at 0x10177350
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd8
mov eax, dword [0x1041f700]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 0x20]
mov eax, dword [ebp + 8]
push esi
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0xd8], ecx
mov ecx, dword [ebp + 0x24]
mov dword [ebp - 0xc8], ecx
mov ecx, dword [ebp + 0x28]
shr esi, 3
mov dword [ebp - 0xd4], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0xd0], ecx
mov ecx, dword [ebp + 0x2c]
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0x98], ecx
mov dword [ebp - 0xa8], 0
mov dword [ebp - 0x94], 0
mov dword [ebp - 0xbc], 0
mov dword [ebp - 0xb4], 2
push edi
mov edi, dword [ebp + 0x18]
cmp esi, 0x14
je 0x101773ed
cmp esi, 0x1c
je 0x101773ed
cmp esi, 0x20
je 0x101773ed
pop edi
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.101c7f5c
mov esp, ebp
pop ebp
ret
test eax, eax
jne 0x101773fc
call fcn.1011f3d0
mov dword [ebp - 0xa0], eax
mov ecx, dword [ebp + 0xc]
mov eax, 0x200
cmp ecx, eax
push ebx
mov ebx, dword [ebp + 0x1c]
cmovb ecx, eax
lea eax, [ecx + 0x3f]
and eax, 0xffffffc0
mov dword [ebp - 0xac], eax
cmp ebx, esi
jae 0x10177426
mov dword [ebp + 0x1c], 0
jmp 0x10177448
cmova ebx, esi
mov dword [ebp + 0x1c], ebx
test edi, edi
je 0x10177440
push ebx
lea eax, [ebp - 0x64]
push edi
push eax
call fcn.101b8700
add esp, 0xc
jmp 0x10177448
test ebx, ebx
jne 0x10177b14
call fcn.1016d960
mov edi, eax
mov dword [ebp - 0x94], edi
test edi, edi
je 0x10177b14
call fcn.1012a470
mov ebx, eax
mov dword [ebp - 0x88], ebx
test ebx, ebx
je 0x10177b14
push ebx
call fcn.1012a4f0
push ebx
call fcn.1012a400
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x10177aff
mov edi, dword [ebp - 0x88]
push edi
call fcn.1012a400
add esp, 4
mov dword [ebp - 0xa4], eax
test eax, eax
je 0x10177aff
push edi
call fcn.1012a400
add esp, 4
mov dword [ebp - 0xb0], eax
test eax, eax
je 0x10177aff
push edi
call fcn.1012a400
add esp, 4
mov dword [ebp - 0x9c], eax
test eax, eax
je 0x10177aff
push edi
call fcn.1012a400
add esp, 4
mov dword [ebp - 0xcc], eax
test eax, eax
je 0x10177aff
push edi
call fcn.1012a400
add esp, 4
mov dword [ebp - 0xc4], eax
test eax, eax
je 0x10177aff
push edi
call fcn.1012a400
add esp, 4
mov dword [ebp - 0x90], eax
test eax, eax
je 0x10177aff
push edi
call fcn.1012a400
mov edi, eax
add esp, 4
mov dword [ebp - 0x8c], edi
test edi, edi
je 0x10177aff
mov eax, dword [ebp - 0xac]
dec eax
push eax
call fcn.10125bc0
push eax
push edi
call fcn.101298c0
add esp, 0xc
test eax, eax
je 0x10177aff
mov edi, dword [ebp - 0xbc]
push edi
push 0
push dword [ebp - 0x98]
call fcn.1017ffb0
inc edi
add esp, 0xc
mov dword [ebp - 0xbc], edi
test eax, eax
je 0x10177aff
cmp dword [ebp + 0x1c], 0
jne 0x10177593
lea eax, [ebp - 0x64]
push esi
push eax
call fcn.1013c420
add esp, 8
mov edi, 1
jmp 0x10177598
xor edi, edi
mov dword [ebp + 0x1c], edi
push esi
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x44]
push eax
call fcn.101b8700
push esi
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x84]
push eax
call fcn.101b8700
lea eax, [esi - 1]
add esp, 0x18
test eax, eax
js 0x101775ca
inc byte [ebp + eax - 0x44]
jne 0x101775ca
dec eax
jns 0x101775c1
push 0
push dword [ebp - 0xa0]
lea eax, [ebp - 0x24]
push 0
push eax
lea eax, [ebp - 0x64]
push esi
push eax
call fcn.1010fb00
add esp, 0x18
test eax, eax
je 0x10177aff
push 0
push dword [ebp - 0xa0]
lea eax, [ebp - 0x84]
push 0
push eax
lea eax, [ebp - 0x44]
push esi
push eax
call fcn.1010fb00
add esp, 0x18
test eax, eax
je 0x10177aff
xor ecx, ecx
test esi, esi
jle 0x10177680
cmp esi, 0x20
jb 0x10177666
mov eax, esi
and eax, 0x8000001f
jns 0x1017762c
dec eax
or eax, 0xffffffe0
inc eax
mov edx, esi
sub edx, eax
movdqu xmm0, xmmword [ebp + ecx - 0x24]
movdqu xmm1, xmmword [ebp + ecx - 0x84]
pxor xmm1, xmm0
movdqu xmmword [ebp + ecx - 0x24], xmm1
movdqu xmm0, xmmword [ebp + ecx - 0x14]
movdqu xmm1, xmmword [ebp + ecx - 0x74]
pxor xmm1, xmm0
movdqu xmmword [ebp + ecx - 0x14], xmm1
add ecx, 0x20
cmp ecx, edx
jl 0x10177630
cmp ecx, esi
jge 0x10177680
lea ebx, [ebx]
mov al, byte [ebp + ecx - 0x84]
xor byte [ebp + ecx - 0x24], al
inc ecx
cmp ecx, esi
jl 0x10177670
push dword [ebp - 0x9c]
or byte [ebp - 0x24], 0x80
lea eax, [ebp - 0x24]
or byte [ebp + esi - 0x25], 1
push esi
push eax
call fcn.10125400
add esp, 0xc
test eax, eax
je 0x10177aff
push dword [ebp - 0x98]
push edi
mov edi, dword [ebp - 0x88]
push edi
push 0x32
push dword [ebp - 0x9c]
call fcn.10180260
add esp, 0x14
test eax, eax
jg 0x101776d1
je 0x10177553
jmp 0x10177aff
mov edi, dword [ebp - 0x98]
push 0
push 2
push edi
call fcn.1017ffb0
add esp, 0xc
test eax, eax
je 0x10177aff
push 0
push 3
push edi
call fcn.1017ffb0
add esp, 0xc
test eax, eax
je 0x10177aff
mov ecx, dword [ebp - 0xac]
mov eax, 0xcccccccd
xor edi, edi
mov dword [ebp - 0xb8], edi
lea ecx, [ecx - 1]
mul ecx
mov eax, edx
shr eax, 7
mov dword [ebp - 0xc0], eax
test edi, edi
je 0x10177741
push edi
push 0
push dword [ebp - 0x98]
call fcn.1017ffb0
add esp, 0xc
test eax, eax
je 0x10177aff
push 0
push dword [ebp - 0xb0]
call fcn.101259e0
xor edi, edi
add esp, 8
cmp dword [ebp - 0xc0], edi
jl 0x101777ec
nop
lea eax, [esi - 1]
test eax, eax
js 0x10177770
inc byte [ebp + eax - 0x44]
jne 0x10177770
dec eax
jns 0x10177767
push 0
push dword [ebp - 0xa0]
lea eax, [ebp - 0x24]
push 0
push eax
lea eax, [ebp - 0x44]
push esi
push eax
call fcn.1010fb00
add esp, 0x18
test eax, eax
je 0x10177aff
push ebx
lea eax, [ebp - 0x24]
push esi
push eax
call fcn.10125400
add esp, 0xc
test eax, eax
je 0x10177aff
lea eax, [esi*8]
imul eax, edi
push eax
push ebx
push ebx
call fcn.101298c0
add esp, 0xc
test eax, eax
je 0x10177aff
mov eax, dword [ebp - 0xb0]
push ebx
push eax
push eax
call fcn.1016bf50
add esp, 0xc
test eax, eax
je 0x10177aff
inc edi
cmp edi, dword [ebp - 0xc0]
jle 0x10177760
mov eax, dword [ebp - 0xac]
mov edi, dword [ebp - 0xb0]
dec eax
push eax
push edi
call fcn.101257d0
add esp, 8
test eax, eax
je 0x10177aff
push edi
mov edi, dword [ebp - 0xcc]
push edi
call fcn.10125610
add esp, 8
test eax, eax
je 0x10177aff
push dword [ebp - 0x8c]
push edi
push edi
call fcn.1016bf50
add esp, 0xc
test eax, eax
je 0x10177aff
push dword [ebp - 0x9c]
push ebx
call fcn.101299f0
add esp, 8
test eax, eax
je 0x10177aff
push dword [ebp - 0x88]
push ebx
push edi
push dword [ebp - 0xc4]
push 0
call fcn.1016c230
add esp, 0x14
test eax, eax
je 0x10177aff
call fcn.10125bc0
push eax
push dword [ebp - 0xc4]
push ebx
call fcn.1016bfe0
add esp, 0xc
test eax, eax
je 0x10177aff
push ebx
push edi
mov edi, dword [ebp - 0x90]
push edi
call fcn.1016bfe0
add esp, 0xc
test eax, eax
je 0x10177aff
push dword [ebp - 0x8c]
push edi
call fcn.10125570
add esp, 8
test eax, eax
js 0x101778e4
mov edi, dword [ebp - 0x98]
push edi
push 1
push dword [ebp - 0x88]
push 0x32
push dword [ebp - 0x90]
call fcn.10180260
add esp, 0x14
test eax, eax
jg 0x10177902
jne 0x10177aff
mov edi, dword [ebp - 0xb8]
inc edi
mov dword [ebp - 0xb8], edi
cmp edi, 0x1000
jl 0x10177724
jmp 0x10177553
push 1
push 2
push edi
call fcn.1017ffb0
add esp, 0xc
test eax, eax
je 0x10177aff
call fcn.10125bc0
push eax
push dword [ebp - 0x90]
push dword [ebp - 0x8c]
call fcn.1016bfe0
add esp, 0xc
test eax, eax
je 0x10177aff
push dword [ebp - 0x88]
push dword [ebp - 0x9c]
push dword [ebp - 0x8c]
push 0
push ebx
call fcn.1016c230
add esp, 0x14
test eax, eax
je 0x10177aff
push 2
push dword [ebp - 0x8c]
call fcn.101259e0
add esp, 8
test eax, eax
je 0x10177aff
push dword [ebp - 0x88]
push dword [ebp - 0x90]
push dword [ebp - 0x94]
call fcn.1016d9b0
add esp, 0xc
test eax, eax
je 0x10177aff
push dword [ebp - 0x94]
push dword [ebp - 0x88]
push dword [ebp - 0x90]
push ebx
push dword [ebp - 0x8c]
push dword [ebp - 0xa4]
call fcn.1016e460
add esp, 0x18
test eax, eax
je 0x10177aff
jmp 0x101779d0
mov ecx, dword [ebp - 0xa4]
cmp dword [ecx + 4], 1
jne 0x10177a3d
mov eax, dword [ecx]
cmp dword [eax], 1
jne 0x10177a3d
cmp dword [ecx + 0xc], 0
jne 0x10177a3d
call fcn.10125bc0
push eax
mov eax, dword [ebp - 0x8c]
push eax
push eax
call fcn.1016bf50
add esp, 0xc
test eax, eax
je 0x10177aff
push dword [ebp - 0x94]
inc dword [ebp - 0xb4]
push dword [ebp - 0x88]
push dword [ebp - 0x90]
push ebx
push dword [ebp - 0x8c]
push dword [ebp - 0xa4]
call fcn.1016e460
add esp, 0x18
test eax, eax
jne 0x101779d0
jmp 0x10177aff
push 1
push 3
push edi
call fcn.1017ffb0
add esp, 0xc
test eax, eax
je 0x10177aff
mov ebx, dword [ebp - 0xd4]
mov dword [ebp - 0xa8], 1
push dword [ebx + 0xc]
call fcn.10125720
push dword [ebx + 0x10]
call fcn.10125720
push dword [ebx + 0x14]
call fcn.10125720
push dword [ebp - 0x90]
call fcn.101256e0
push dword [ebp - 0x9c]
mov dword [ebx + 0xc], eax
call fcn.101256e0
push dword [ebp - 0xa4]
mov dword [ebx + 0x10], eax
call fcn.101256e0
add esp, 0x18
mov dword [ebx + 0x14], eax
cmp dword [ebx + 0xc], 0
je 0x10177af5
cmp dword [ebx + 0x10], 0
je 0x10177af5
test eax, eax
je 0x10177af5
mov ecx, dword [ebp - 0xc8]
test ecx, ecx
je 0x10177ac9
mov eax, dword [ebp - 0xb8]
mov dword [ecx], eax
mov eax, dword [ebp - 0xd0]
test eax, eax
je 0x10177adb
mov ecx, dword [ebp - 0xb4]
mov dword [eax], ecx
mov eax, dword [ebp - 0xd8]
test eax, eax
je 0x10177aff
push esi
lea ecx, [ebp - 0x64]
push ecx
push eax
call fcn.101b8700
add esp, 0xc
jmp 0x10177aff
mov dword [ebp - 0xa8], 0
mov ebx, dword [ebp - 0x88]
push ebx
call fcn.1012a380
push ebx
call fcn.1012a3d0
add esp, 8
push dword [ebp - 0x94]
call fcn.1016d920
mov ecx, dword [ebp - 4]
add esp, 4
mov eax, dword [ebp - 0xa8]
xor ecx, ebp
pop ebx
pop edi
pop esi
call fcn.101c7f5c
mov esp, ebp
pop ebp
ret