Function at 0x416c80
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
mov eax, 0x15ac
call fcn.00417750
mov edi, ecx
mov ecx, dword [esp + 0x15c0]
pxor xmm0, xmm0
movdqu xmmword [esp + 0x28], xmm0
movdqu xmmword [esp + 0x38], xmm0
movdqu xmmword [esp + 0x48], xmm0
movdqu xmmword [esp + 0x58], xmm0
movdqu xmmword [esp + 0x68], xmm0
movdqu xmmword [esp + 0x78], xmm0
movdqu xmmword [esp + 0x88], xmm0
movdqu xmmword [esp + 0x98], xmm0
mov dword [esp + 0xa8], 0
cmp dword [esp + 0x15c8], 0
mov dword [esp + 0x1c], edx
je 0x416d65
test ecx, ecx
mov edx, ecx
jle 0x417570
xor eax, eax
cmp edx, 1
je 0x416d38
and ecx, 0xfffffffe
mov eax, dword [esp + 0x1c]
lea eax, [eax + eax*8]
shl eax, 5
lea edx, [eax + edi]
add edx, 0x8f13
xor eax, eax
nop word cs:[eax + eax]
movzx esi, byte [edx + eax - 1]
inc dword [esp + esi*4 + 0x28]
movzx esi, byte [edx + eax]
inc dword [esp + esi*4 + 0x28]
add eax, 2
cmp ecx, eax
jne 0x416d20
mov edx, dword [esp + 0x15c0]
test dl, 1
je 0x417570
mov ecx, dword [esp + 0x1c]
lea ecx, [ecx + ecx*8]
shl ecx, 5
add ecx, edi
movzx eax, byte [eax + ecx + 0x8f12]
inc dword [esp + eax*4 + 0x28]
jmp 0x417570
lea ebp, [edx + edx*8]
mov eax, ebp
shl eax, 6
mov dword [esp + 0x18], eax
test ecx, ecx
mov dword [esp + 0x10], edi
mov dword [esp + 0x20], ebp
jle 0x416e79
cmp ecx, 1
jne 0x417677
mov esi, edi
xor eax, eax
xor edi, edi
mov ecx, dword [esp + 0x15c0]
test cl, 1
je 0x416dce
mov ecx, dword [esp + 0x18]
add ecx, esi
add ecx, 0x8192
movzx ecx, word [ecx + eax*2]
test cx, cx
je 0x416dce
mov ebx, edi
mov word [esp + edi*4 + 0x4ac], cx
mov ecx, edi
mov word [esp + edi*4 + 0x4ae], ax
and ebx, 1
xor ecx, 1
lea edi, [ecx + ebx*2]
lea eax, [esp + 0x92c]
push 0x800
push 0
push eax
call fcn.00417910
add esp, 0xc
test edi, edi
sete byte [esp + 0xb]
je 0x416e90
mov ebx, edi
xor eax, eax
cmp edi, 1
je 0x416e4f
mov ecx, ebx
and ecx, 0xfffffffe
xor eax, eax
nop word cs:[eax + eax]
movzx edx, word [esp + eax*4 + 0x4ac]
movzx esi, dl
inc dword [esp + esi*4 + 0x92c]
shr edx, 8
inc dword [esp + edx*4 + 0xd2c]
movzx edx, word [esp + eax*4 + 0x4b0]
movzx esi, dl
inc dword [esp + esi*4 + 0x92c]
shr edx, 8
inc dword [esp + edx*4 + 0xd2c]
add eax, 2
cmp ecx, eax
jne 0x416e10
test bl, 1
je 0x416e70
movzx eax, word [esp + eax*4 + 0x4ac]
movzx ecx, al
inc dword [esp + ecx*4 + 0x92c]
shr eax, 8
inc dword [esp + eax*4 + 0xd2c]
mov eax, dword [esp + 0xd2c]
jmp 0x416e99
lea eax, [esp + 0x92c]
push 0x800
push 0
push eax
call fcn.00417910
add esp, 0xc
xor ebx, ebx
mov byte [esp + 0xb], 1
xor eax, eax
xor ecx, ecx
cmp eax, ebx
sete cl
mov eax, 2
sub eax, ecx
mov dword [esp + 0x24], eax
mov dword [esp + 4], ebx
and ebx, 0xfffffffe
mov dword [esp + 0xc], ebx
xor ebx, ebx
lea eax, [esp + 0x4ac]
mov dword [esp], eax
lea eax, [esp + 0x112c]
lea edx, [esp + 0x92c]
mov dword [esp + 0x14], 0
jmp 0x416efe
mov esi, dword [esp + 0x14]
inc esi
add ebx, 8
add edx, 0x400
mov eax, ebp
mov dword [esp + 0x14], esi
cmp esi, dword [esp + 0x24]
je 0x416ffc
mov ebp, dword [esp]
mov dword [esp], eax
mov esi, 3
xor eax, eax
nop dword [eax + eax]
mov dword [esp + esi*4 + 0xa0], eax
add eax, dword [edx + esi*4 - 0xc]
mov dword [esp + esi*4 + 0xa4], eax
add eax, dword [edx + esi*4 - 8]
mov dword [esp + esi*4 + 0xa8], eax
add eax, dword [edx + esi*4 - 4]
mov dword [esp + esi*4 + 0xac], eax
add eax, dword [edx + esi*4]
add esi, 4
cmp esi, 0x103
jne 0x416f10
cmp byte [esp + 0xb], 0
jne 0x416ee0
xor esi, esi
cmp dword [esp + 4], 1
je 0x416fbd
xor esi, esi
nop dword [eax + eax]
movzx eax, word [ebp + esi*4]
mov ecx, ebx
shr eax, cl
movzx eax, al
mov ecx, dword [esp + eax*4 + 0xac]
mov edi, ebp
lea ebp, [ecx + 1]
mov dword [esp + eax*4 + 0xac], ebp
mov eax, dword [edi + esi*4]
mov ebp, dword [esp]
mov dword [ebp + ecx*4], eax
movzx eax, word [edi + esi*4 + 4]
mov ecx, ebx
shr eax, cl
movzx eax, al
mov ecx, dword [esp + eax*4 + 0xac]
lea ebp, [ecx + 1]
mov dword [esp + eax*4 + 0xac], ebp
mov ebp, edi
mov eax, dword [edi + esi*4 + 4]
mov edi, dword [esp]
mov dword [edi + ecx*4], eax
mov ecx, dword [esp + 0xc]
add esi, 2
cmp ecx, esi
jne 0x416f60
test byte [esp + 4], 1
je 0x416ee0
movzx eax, word [ebp + esi*4]
mov ecx, ebx
shr eax, cl
movzx eax, al
mov edi, dword [esp + eax*4 + 0xac]
mov ecx, ebx
mov ebx, ebp
lea ebp, [edi + 1]
mov dword [esp + eax*4 + 0xac], ebp
mov ebp, ebx
mov ebx, ecx
mov eax, dword [ebp + esi*4]
mov esi, dword [esp]
mov dword [esi + edi*4], eax
jmp 0x416ee0
cmp dword [esp + 4], 0
mov ecx, dword [esp + 0x15c4]
je 0x41743e
mov edx, dword [esp + 4]
cmp edx, 1
jne 0x417024
mov eax, dword [esp]
mov word [eax], 1
jmp 0x417284
mov ecx, dword [esp]
movzx eax, word [ecx + 4]
add word [ecx], ax
mov eax, edx
xor eax, 0xfffffffe
mov ecx, dword [esp + 0xc]
lea ecx, [eax + ecx*2]
inc ecx
cmp ecx, 2
jl 0x4170ee
mov ecx, dword [esp + 0xc]
add ecx, ecx
add eax, ecx
neg eax
mov ecx, 1
mov edx, 2
xor esi, esi
jmp 0x41707a
mov ebx, dword [esp]
movzx ebp, word [ebx + esi*4]
add word [ebx + ecx*4], bp
mov word [ebx + esi*4], cx
inc esi
lea edi, [eax + ecx]
inc edi
inc ecx
cmp edi, 1
je 0x4170ee
mov ebx, dword [esp]
movzx edi, word [ebx + esi*4]
cmp edx, dword [esp + 4]
jge 0x417090
movzx ebp, word [ebx + edx*4]
cmp di, bp
jae 0x4170b0
mov word [ebx + ecx*4], di
mov word [ebx + esi*4], cx
inc esi
cmp edx, dword [esp + 4]
jge 0x417060
jmp 0x4170bb
inc edx
mov word [ebx + ecx*4], bp
cmp edx, dword [esp + 4]
jge 0x417060
cmp esi, ecx
jge 0x4170e0
mov ebx, dword [esp]
movzx ebp, word [ebx + esi*4]
movzx edi, word [ebx + edx*4]
cmp bp, di
jb 0x417067
jmp 0x4170e7
mov ebx, dword [esp]
movzx edi, word [ebx + edx*4]
inc edx
add word [ebx + ecx*4], di
jmp 0x417070
mov ecx, dword [esp + 4]
mov edi, dword [esp]
mov word [edi + ecx*4 - 8], 0
add ecx, 0xfffffffd
mov ebx, dword [esp + 0xc]
js 0x417181
mov eax, dword [esp + 4]
lea edx, [eax + 2]
mov eax, ecx
and edx, 3
je 0x417131
mov eax, ecx
nop word cs:[eax + eax]
movzx esi, word [edi + eax*4]
movzx esi, word [edi + esi*4]
inc esi
mov word [edi + eax*4], si
dec eax
dec edx
jne 0x417120
cmp ecx, 3
jb 0x417181
mov edx, edi
inc eax
nop dword [eax]
movzx ecx, word [edx + eax*4 - 4]
movzx ecx, word [edx + ecx*4]
inc ecx
mov word [edx + eax*4 - 4], cx
movzx ecx, word [edx + eax*4 - 8]
movzx ecx, word [edx + ecx*4]
inc ecx
mov word [edx + eax*4 - 8], cx
movzx ecx, word [edx + eax*4 - 0xc]
movzx ecx, word [edx + ecx*4]
inc ecx
mov word [edx + eax*4 - 0xc], cx
movzx ecx, word [edx + eax*4 - 0x10]
movzx ecx, word [edx + ecx*4]
inc ecx
mov word [edx + eax*4 - 0x10], cx
add eax, 0xfffffffc
jne 0x417140
mov eax, dword [esp + 4]
lea ecx, [eax - 2]
or eax, 0xfffffffe
add eax, ebx
inc eax
xor edx, edx
mov esi, 1
jmp 0x4171ac
lea esi, [ebx + ebx]
inc edx
test ebx, ebx
jle 0x417272
test ecx, ecx
js 0x4171e0
lea ebx, [ecx + 1]
xor ebp, ebp
nop word cs:[eax + eax]
mov edi, dword [esp]
movzx edi, word [edi + ecx*4]
cmp edx, edi
jne 0x4171f0
inc ebp
dec ecx
cmp ebx, ebp
jne 0x4171c0
mov ecx, 0xffffffff
jmp 0x4171f2
xor ebx, ebx
jmp 0x4171f2
mov ebx, ebp
mov ebp, esi
sub ebp, ebx
jle 0x4171a0
mov edi, ebx
not edi
add edi, esi
and ebp, 3
je 0x417237
mov dword [esp + 0x14], ebx
mov dword [esp + 0xc], edi
mov edi, dword [esp]
lea edi, [edi + eax*4]
mov ebx, ebp
xor ebp, ebp
nop word cs:[eax + eax]
mov word [edi], dx
inc ebp
add edi, 0xfffffffc
cmp ebx, ebp
jne 0x417220
sub esi, ebp
sub eax, ebp
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 0x14]
cmp edi, 3
mov edi, dword [esp]
jb 0x4171a0
nop word cs:[eax + eax]
mov word [edi + eax*4], dx
mov word [edi + eax*4 - 4], dx
mov word [edi + eax*4 - 8], dx
mov word [edi + eax*4 - 0xc], dx
add eax, 0xfffffffc
add esi, 0xfffffffc
cmp esi, ebx
jg 0x417250
jmp 0x4171a0
cmp dword [esp + 4], 0
mov ecx, dword [esp + 0x15c4]
jle 0x41743e
xor eax, eax
mov esi, dword [esp + 4]
mov edi, dword [esp]
nop dword [eax]
movzx edx, word [edi + eax*4]
inc dword [esp + edx*4 + 0x28]
mov edx, eax
xor edx, 1
and eax, 1
lea eax, [edx + eax*2]
cmp eax, esi
jl 0x417290
cmp esi, 2
jl 0x41743e
cmp ecx, 0x1f
jg 0x417320
mov eax, dword [esp + ecx*4 + 0x28]
mov edx, ecx
neg edx
mov esi, ecx
and edx, 3
je 0x4172dc
nop word cs:[eax + eax]
add eax, dword [esp + esi*4 + 0x2c]
inc esi
mov dword [esp + ecx*4 + 0x28], eax
dec edx
jne 0x4172d0
lea edx, [ecx - 0x1d]
cmp edx, 3
jb 0x417318
nop word cs:[eax + eax]
add eax, dword [esp + esi*4 + 0x2c]
mov dword [esp + ecx*4 + 0x28], eax
add eax, dword [esp + esi*4 + 0x30]
mov dword [esp + ecx*4 + 0x28], eax
add eax, dword [esp + esi*4 + 0x34]
mov dword [esp + ecx*4 + 0x28], eax
add eax, dword [esp + esi*4 + 0x38]
add esi, 4
mov dword [esp + ecx*4 + 0x28], eax
cmp esi, 0x20
jne 0x4172f0
test ecx, ecx
jle 0x4176ff
mov eax, ecx
not eax
cmp ecx, 1
mov edi, ecx
adc edi, 0xffffffff
inc edi
xor esi, esi
mov ebx, ecx
mov edx, ecx
cmp edi, 4
jb 0x417400
mov ecx, ebx
mov ebx, edi
and ebx, 0xfffffffc
mov edx, ecx
sub edx, ebx
movd xmm0, ecx
pshufd xmm0, xmm0, 0
movdqa xmm4, xmmword [0x460860]
paddd xmm4, xmm0
movd xmm2, eax
pshufd xmm2, xmm2, 0
mov esi, ebx
neg esi
lea ebp, [esp + ecx*4]
add ebp, 0x1c
pxor xmm3, xmm3
xor ecx, ecx
movdqa xmm5, xmmword [0x460880]
nop dword [eax]
movdqu xmm6, xmmword [ebp + ecx*4]
movdqa xmm7, xmm4
pand xmm7, xmm2
movdqa xmm1, xmm4
pandn xmm1, xmm0
psubd xmm1, xmm7
pshufd xmm7, xmm6, 0x1b
pslld xmm1, 0x17
paddd xmm1, xmmword [0x460870]
cvttps2dq xmm1, xmm1
pmuludq xmm7, xmm1
pshufd xmm1, xmm1, 0xf5
pshufd xmm6, xmm6, 0x4e
pmuludq xmm6, xmm1
pshufd xmm1, xmm7, 0xe8
pshufd xmm6, xmm6, 0xe8
punpckldq xmm1, xmm6
paddd xmm3, xmm1
paddd xmm4, xmm5
add ecx, 0xfffffffc
cmp esi, ecx
jne 0x417380
pshufd xmm0, xmm3, 0xee
paddd xmm0, xmm3
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd esi, xmm1
cmp edi, ebx
mov ebx, dword [esp + 0x15c4]
je 0x41742b
mov ebp, edx
not ebp
nop word cs:[eax + eax]
mov edi, edx
and edi, eax
mov ecx, ebp
and ecx, ebx
sub ecx, edi
mov edi, dword [esp + edx*4 + 0x28]
shl edi, cl
add esi, edi
inc ebp
cmp edx, 1
lea edx, [edx - 1]
ja 0x417410
mov eax, 1
mov ecx, ebx
shl eax, cl
cmp esi, eax
mov ecx, ebx
jne 0x417708
mov edi, dword [esp + 0x20]
shl edi, 5
mov esi, dword [esp + 0x10]
lea eax, [esi + edi]
add eax, 0x8f12
push 0x120
push 0
push eax
call fcn.00417910
add esp, 0xc
mov eax, dword [esp + 0x18]
add eax, esi
add eax, 0x8852
push 0x240
push 0
push eax
call fcn.00417910
add esp, 0xc
cmp dword [esp + 0x15c4], 0
jle 0x417565
add dword [esp], 0xfffffffe
mov eax, 1
jmp 0x4174b6
mov ebp, dword [esp + 4]
mov dword [esp + 4], ebp
inc eax
cmp eax, dword [esp + 0x15c4]
jg 0x417565
mov ebx, dword [esp + eax*4 + 0x28]
test ebx, ebx
jle 0x4174a0
mov edx, ebx
and edx, 3
je 0x417510
mov dword [esp + 0xc], ebx
mov ecx, edi
mov esi, dword [esp + 4]
mov edi, dword [esp]
lea ebp, [edi + esi*4]
xor esi, esi
nop word [eax + eax]
movzx edi, word [ebp]
mov ebx, dword [esp + 0x10]
add ebx, ecx
mov byte [edi + ebx + 0x8f12], al
inc esi
add ebp, 0xfffffffc
cmp edx, esi
jne 0x4174e0
mov ebx, dword [esp + 0xc]
mov edx, ebx
sub edx, esi
sub dword [esp + 4], esi
mov edi, ecx
jmp 0x417512
mov edx, ebx
cmp ebx, 4
mov ebp, dword [esp + 4]
mov ebx, dword [esp]
jb 0x4174a4
dec edx
nop
movzx ecx, word [ebx + ebp*4]
mov esi, dword [esp + 0x10]
add esi, edi
mov byte [ecx + esi + 0x8f12], al
movzx ecx, word [ebx + ebp*4 - 4]
mov byte [ecx + esi + 0x8f12], al
movzx ecx, word [ebx + ebp*4 - 8]
mov byte [ecx + esi + 0x8f12], al
movzx ecx, word [ebx + ebp*4 - 0xc]
mov byte [ecx + esi + 0x8f12], al
add ebp, 0xfffffffc
add edx, 0xfffffffc
cmp edx, 0xfffffffe
jb 0x417520
jmp 0x4174a4
mov edx, dword [esp + 0x15c0]
mov edi, dword [esp + 0x10]
mov esi, edx
mov dword [esp + 0x930], 0
mov edx, dword [esp + 0x15c4]
cmp edx, 2
jl 0x4175a2
xor eax, eax
mov ecx, 2
add eax, dword [esp + ecx*4 + 0x24]
add eax, eax
mov dword [esp + ecx*4 + 0x92c], eax
inc ecx
cmp ecx, edx
jle 0x417590
mov eax, esi
test esi, esi
jle 0x41766c
xor eax, eax
mov ecx, dword [esp + 0x1c]
lea ecx, [ecx + ecx*8]
mov edx, ecx
shl edx, 5
add edx, edi
mov dword [esp], edx
mov edx, esi
shl ecx, 6
add ecx, edi
mov dword [esp + 0x10], ecx
jmp 0x4175f2
mov ecx, dword [esp + 0x10]
mov word [ecx + eax*2 + 0x8852], di
mov edx, dword [esp + 0x15c0]
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, edx
jge 0x41766c
mov ecx, dword [esp]
movzx ebx, byte [eax + ecx + 0x8f12]
test ebx, ebx
je 0x4175e3
mov edx, dword [esp + ebx*4 + 0x92c]
lea ecx, [edx + 1]
mov dword [esp + ebx*4 + 0x92c], ecx
xor edi, edi
cmp bl, 1
je 0x417650
mov ebp, ebx
and ebp, 0xfffffffe
xor ecx, ecx
mov edi, edx
xor edi, 0x7ffffffe
mov esi, edx
or esi, 1
and esi, edi
mov edi, edx
shr edi, 1
shl ecx, 2
add esi, esi
or esi, ecx
mov ecx, edi
xor ecx, 0xfffffffe
or edi, 1
and edi, ecx
or edi, esi
shr edx, 2
mov ecx, edi
add ebp, 0xfffffffe
jne 0x417620
test bl, 1
je 0x4175d0
add edi, edi
mov ecx, edx
xor ecx, 0xfffffffe
or edx, 1
and edx, ecx
or edi, edx
jmp 0x4175d0
add esp, 0x15ac
pop esi
pop edi
pop ebx
pop ebp
ret
and ecx, 0xfffffffe
mov eax, dword [esp + 0x18]
lea edx, [eax + edi]
add edx, 0x8194
xor eax, eax
xor edi, edi
jmp 0x4176bd
mov word [esp + ebx*4 + 0x4ac], si
mov esi, ebx
lea edi, [eax + 1]
mov word [esp + ebx*4 + 0x4ae], di
and ebx, 1
xor esi, 1
lea edi, [esi + ebx*2]
mov esi, dword [esp + 0x10]
add eax, 2
cmp ecx, eax
je 0x416d90
movzx esi, word [edx + eax*2 - 2]
test si, si
je 0x4176f0
mov ebx, edi
mov word [esp + edi*4 + 0x4ac], si
mov esi, edi
mov word [esp + edi*4 + 0x4ae], ax
and ebx, 1
xor esi, 1
lea ebx, [esi + ebx*2]
jmp 0x4176f2
mov ebx, edi
movzx esi, word [edx + eax*2]
test si, si
jne 0x417690
mov edi, ebx
jmp 0x4176ae
mov eax, 1
shl eax, cl
xor esi, esi
lea ebp, [ecx - 1]
jmp 0x417720
dec esi
cmp esi, eax
mov ecx, dword [esp + 0x15c4]
je 0x41743e
dec dword [esp + ecx*4 + 0x28]
mov edx, ebp
nop word cs:[eax + eax]
test edx, edx
jle 0x417710
mov edi, dword [esp + edx*4 + 0x28]
dec edx
test edi, edi
je 0x417730
dec edi
mov dword [esp + edx*4 + 0x2c], edi
add dword [esp + edx*4 + 0x30], 2
jmp 0x417710