Function at 0x2d186e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xc0
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0x10], 0x83508562
mov dword [esp + 0x14], 0x8f6d8173
mov dword [esp + 0x18], 0x8b788d61
mov dword [esp + 0x1c], 0x974389aa
mov dword [esp + 0x20], 0x9368956e
mov dword [esp + 0x24], 0x9f629179
mov dword [esp + 0x28], 0x9b6b9d63
mov dword [esp + 0x2c], 0xa76a996b
mov dword [esp + 0x30], 0xa379a586
mov dword [esp + 0x34], 0xaf5ca149
mov dword [esp + 0x38], 0xab5bad52
mov dword [esp + 0x3c], 0xb741a958
mov dword [esp + 0x40], 0xb350b54b
lea eax, [esp + 0x44]
mov word [esp + 0x44], 0xb1b2
mov dword [esp + 0x46], 0
mov dword [esp + 0x4a], 0
mov dword [esp + 0x4e], 0
mov word [esp + 0x52], 0
mov dword [esp + 0x84], 0
mov ecx, dword [esp + 0x84]
cmp ecx, 0x43
ja 0x2d187fb
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x84]
mov edx, dword [esp + 0x84]
movzx esi, byte [esp + edx + 0x10]
lea edi, [ecx - 0x1646bb3f]
lea edx, [ecx + esi]
add edx, 0xe9b944c1
and edi, esi
add ecx, 0xc1
and ecx, esi
add ecx, edi
mov esi, ecx
xor esi, edx
not ecx
and ecx, edx
add ecx, ecx
sub ecx, esi
add cl, 0xb9
mov edx, dword [esp + 0x84]
mov byte [esp + edx + 0x10], cl
inc dword [esp + 0x84]
mov ecx, dword [esp + 0x84]
cmp ecx, 0x44
jb 0x2d187a0
lea edi, [esp + 0x84]
lea edx, [esp + 0x10]
mov ecx, 0xd
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0xb8]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov esi, dword [ebx + 4]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
cmp word [esi + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x2d18830
mov edx, ecx
sar edx, 1
xor edx, 0x1b
mov eax, dword [ebp + 0x10]
mov edi, dword [eax + 4]
mov eax, 0xfffffffe
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x2d18850
and ecx, 0x36
add edx, ecx
sar eax, 1
add eax, edx
jns 0x2d1886d
mov eax, 0xffffffff
jmp 0x2d1886f
add eax, eax
push eax
call fcn.02d39cc0
add esp, 4
movzx ecx, word [esi]
mov dword [esp + 8], eax
test cx, cx
je 0x2d188a1
add esi, 2
mov eax, dword [esp + 8]
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x2d18890
mov word [eax], 0
movzx ecx, word [esp + 0x84]
test cx, cx
je 0x2d188d1
lea edx, [esp + 0x86]
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x2d188c0
mov word [eax], 0
movzx ecx, word [edi]
test cx, cx
je 0x2d18901
add edi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x2d188f0
mov word [eax], 0
mov dword [esp + 0x10], 0x7bbf7997
mov dword [esp + 0x14], 0x7fc87df2
mov dword [esp + 0x18], 0x73ce71d9
mov dword [esp + 0x1c], 0x77cf75c7
mov dword [esp + 0x20], 0x4bf649c7
mov dword [esp + 0x24], 0x4fbd4dff
lea eax, [esp + 0x28]
mov word [esp + 0x28], 0x414e
mov dword [esp + 0x2a], 0
mov dword [esp + 0x2e], 0
mov dword [esp + 0x32], 0
mov byte [esp + 0x36], 0
mov dword [esp + 0x68], 0
mov ecx, dword [esp + 0x68]
cmp ecx, 0x26
ja 0x2d189a0
nop
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x68]
movzx edx, byte [esp + edx + 0x10]
lea esi, [ecx + 0xf]
and esi, edx
add ecx, edx
add esi, esi
sub ecx, esi
add cl, 0xa6
mov edx, dword [esp + 0x68]
mov byte [esp + edx + 0x10], cl
inc dword [esp + 0x68]
mov ecx, dword [esp + 0x68]
cmp ecx, 0x27
jb 0x2d18970
lea edi, [esp + 0x68]
lea edx, [esp + 0x10]
mov ecx, 6
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x80]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov edi, dword [ebx]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x2d189d0
mov esi, dword [ebx + 8]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x2d189f0
mov edx, dword [ebp + 0x10]
mov ebx, dword [edx]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + edx + 2], 0
lea edx, [edx + 2]
jne 0x2d18a10
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0xe
test eax, eax
jns 0x2d18a34
mov eax, 0xffffffff
jmp 0x2d18a3c
add ecx, edx
lea eax, [ecx + ecx]
add eax, 0x1c
push eax
call fcn.02d39cc0
add esp, 4
movzx ecx, word [edi]
mov dword [esp + 0xc], eax
test cx, cx
je 0x2d18a71
add edi, 2
mov eax, dword [esp + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x2d18a60
mov word [eax], 0x2f
add eax, 2
movzx ecx, word [esi]
test cx, cx
je 0x2d18aa1
add esi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x2d18a90
mov word [eax], 0
movzx ecx, word [esp + 0x68]
test cx, cx
je 0x2d18ad3
lea edx, [esp + 0x6a]
mov esi, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x2d18ac0
jmp 0x2d18ad7
mov esi, dword [esp + 8]
mov word [eax], 0
movzx ecx, word [ebx]
test cx, cx
je 0x2d18b01
add ebx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x2d18af0
mov word [eax], 0
mov dword [esp + 0x27], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0xb3b4b560
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x1a
ja 0x2d18b88
nop
mov ecx, dword [esp + 4]
mov eax, dword [esp + 4]
movzx edx, byte [esp + eax + 0x10]
lea eax, [ecx + edx]
add eax, 0x1a4f8a69
add ecx, 0x1a4f8a69
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0x21
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x1b
jb 0x2d18b50
push 0
push 0
push 0xc00000
lea eax, [esp + 0x1c]
push eax
push esi
push dword [esp + 0x20]
push dword [ebp + 8]
call fcn.02d1bf50
add esp, 0x1c
mov ebx, eax
mov eax, dword [0x2d45c98]
mov ecx, 0x7fd1f5e0
xor ecx, dword [0x2d45ca0]
add eax, ecx
inc eax
jmp eax