Function at 0x4161b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xa8
mov ebx, dword [ebp + 0xc]
movaps xmm0, xmmword [0x43ad80]
movups xmmword [esp + 0x10], xmm0
movaps xmm0, xmmword [0x43ad90]
movups xmmword [esp + 0x20], xmm0
movaps xmm0, xmmword [0x43ada0]
movups xmmword [esp + 0x30], xmm0
mov dword [esp + 0x40], 0x3b5e3db3
lea eax, [esp + 0x44]
mov word [esp + 0x44], 0x3938
mov dword [esp + 0x4a], 0
mov dword [esp + 0x46], 0
mov byte [esp + 0x4e], 0
mov dword [esp + 0x6c], 0
mov ecx, dword [esp + 0x6c]
cmp ecx, 0x3e
ja 0x416289
nop
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x6c]
movzx esi, byte [esp + ecx + 0x10]
lea ecx, [edx + esi]
add ecx, 0x7bf4e302
add edx, 0x7bf4e302
mov edi, esi
not edi
or edi, edx
add edi, esi
and edx, esi
add edx, edi
inc edx
mov esi, edx
xor esi, ecx
not edx
and edx, ecx
add edx, edx
sub edx, esi
mov ecx, edx
xor ecx, 0xf1
and edx, 0x71
lea ecx, [ecx + edx*2]
inc cl
mov edx, dword [esp + 0x6c]
mov byte [esp + edx + 0x10], cl
mov ecx, dword [esp + 0x6c]
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x6c]
cmp ecx, 0x3f
jb 0x416220
lea edi, [esp + 0x6c]
lea edx, [esp + 0x10]
mov ecx, 0xd
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0xa0]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov esi, dword [ebx + 4]
mov eax, 0xfffffffe
nop word cs:[eax + eax]
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x4162c0
mov ecx, dword [ebp + 0x10]
mov edi, dword [ecx + 4]
mov ecx, 0xfffffffe
nop word cs:[eax + eax]
cmp word [edi + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x4162e0
sar eax, 1
sar ecx, 1
lea edx, [eax + ecx]
add eax, ecx
add eax, 0x1b
lea ecx, [edx + edx]
add ecx, 0x36
test eax, eax
mov eax, 0xffffffff
cmovns eax, ecx
push eax
call fcn.004088f0
add esp, 4
movzx ecx, word [esi]
mov dword [esp + 8], eax
test cx, cx
je 0x416341
add esi, 2
mov eax, dword [esp + 8]
nop word cs:[eax + eax]
mov word [eax], cx
add eax, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x416330
mov word [eax], 0
movzx ecx, word [esp + 0x6c]
test cx, cx
je 0x416371
lea edx, [esp + 0x6e]
nop word cs:[eax + eax]
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x416360
mov word [eax], 0
movzx ecx, word [edi]
test cx, cx
je 0x4163a1
add edi, 2
nop word cs:[eax + eax]
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x416390
mov word [eax], 0
movaps xmm0, xmmword [0x43adb0]
movups xmmword [esp + 0x10], xmm0
movsd xmm0, qword [0x43adc0]
movsd qword [esp + 0x20], xmm0
lea eax, [esp + 0x28]
mov word [esp + 0x28], 0x3534
mov dword [esp + 0x2e], 0
mov dword [esp + 0x2a], 0
mov dword [esp + 0x32], 0
mov dword [esp + 0x50], 0
mov ecx, dword [esp + 0x50]
cmp ecx, 0x25
ja 0x416446
nop word cs:[eax + eax]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x50]
movzx edx, byte [esp + edx + 0x10]
lea esi, [ecx + 0x68e6f736]
and esi, edx
add ecx, edx
add ecx, 0x68e6f736
add esi, esi
sub ecx, esi
mov edx, ecx
xor edx, 0x85
and ecx, 5
lea ecx, [edx + ecx*2]
inc cl
mov edx, dword [esp + 0x50]
mov byte [esp + edx + 0x10], cl
inc dword [esp + 0x50]
mov ecx, dword [esp + 0x50]
cmp ecx, 0x26
jb 0x416400
lea edi, [esp + 0x50]
lea edx, [esp + 0x10]
mov ecx, 6
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x68]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov edi, dword [ebx]
mov eax, 0xfffffffe
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x416470
mov esi, dword [ebx + 8]
mov ecx, 0xfffffffe
nop word cs:[eax + eax]
cmp word [esi + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x416490
mov edx, dword [ebp + 0x10]
mov ebx, dword [edx]
mov edx, 0xfffffffe
nop word cs:[eax + eax]
cmp word [ebx + edx + 2], 0
lea edx, [edx + 2]
jne 0x4164b0
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [ecx + edx]
add ecx, edx
add ecx, 0xe
add eax, eax
add eax, 0x1c
test ecx, ecx
mov ecx, 0xffffffff
cmovns ecx, eax
push ecx
call fcn.004088f0
add esp, 4
movzx ecx, word [edi]
mov dword [esp + 0xc], eax
test cx, cx
je 0x416511
add edi, 2
mov eax, dword [esp + 0xc]
nop word cs:[eax + eax]
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x416500
mov word [eax], 0x2f
add eax, 2
movzx ecx, word [esi]
test cx, cx
je 0x416541
add esi, 2
nop word cs:[eax + eax]
mov word [eax], cx
add eax, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x416530
mov word [eax], 0
movzx ecx, word [esp + 0x50]
test cx, cx
je 0x416573
lea edx, [esp + 0x52]
mov esi, dword [esp + 8]
nop dword [eax + eax]
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x416560
jmp 0x416577
mov esi, dword [esp + 8]
mov word [eax], 0
movzx ecx, word [ebx]
test cx, cx
je 0x4165a1
add ebx, 2
nop word [eax + eax]
mov word [eax], cx
add eax, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x416590
mov word [eax], 0
mov dword [esp + 0x10], 0x4b4a4d7a
mov dword [esp + 0x14], 0
mov word [esp + 0x18], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 9
ja 0x416610
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x10]
lea edx, [eax + ecx]
add edx, 0xaa006a0a
add eax, 0xa
and eax, ecx
add eax, eax
mov ecx, eax
xor ecx, edx
not eax
and eax, edx
add eax, eax
sub eax, ecx
add al, 0xba
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xa
jb 0x4165d0
push 0
push 0
push 0xc00000
lea eax, [esp + 0x1c]
push eax
push esi
push dword [esp + 0x20]
push dword [ebp + 8]
call fcn.004198c0
add esp, 0x1c
mov ebx, eax
mov eax, dword [0x43f898]
mov ecx, 0x9cfee316
xor ecx, dword [0x43f8a0]
add eax, ecx
inc eax
jmp eax