Function at 0x41dd20
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x4c
mov esi, dword [esp + 0x6c]
mov eax, dword [esp + 0x68]
mov ebp, dword [eax + 4]
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + eax], 0
lea eax, [eax + 2]
jne 0x41dd40
lea ecx, [eax + ebp]
add ecx, 0xfffffffe
add eax, ebp
mov edx, 1
sub edx, eax
and edx, ebp
mov edi, ebp
not edi
and edi, ecx
sub edi, edx
mov ebx, dword [esi + 4]
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + eax], 0
lea eax, [eax + 2]
jne 0x41dd70
sar edi, 1
lea ecx, [ebx + eax]
add ecx, 0xfffffffe
add eax, ebx
mov edx, 1
sub edx, eax
and edx, ebx
mov eax, ebx
not eax
and eax, ecx
sub eax, edx
sar eax, 1
lea ecx, [edi + eax]
mov dword [esp + 0x44], eax
add eax, edi
add eax, 0x1b
test eax, eax
mov dword [esp + 0x48], edi
mov dword [esp + 0x40], ecx
jns 0x41ddb6
mov eax, 0xffffffff
jmp 0x41ddbd
lea eax, [ecx*2 + 0x36]
push eax
call fcn.004080f0
add esp, 4
mov dword [esp + 4], eax
mov dword [esp + 0xa], 0x632e613c
mov dword [esp + 0xe], 0x6705650b
mov dword [esp + 0x12], 0x6b066909
mov dword [esp + 0x16], 0x6f2b6d4c
mov dword [esp + 0x1a], 0x73067108
mov dword [esp + 0x1e], 0x77187511
mov dword [esp + 0x22], 0x7b13790b
mov dword [esp + 0x26], 0x7f107d13
mov dword [esp + 0x2a], 0x83d181a0
mov dword [esp + 0x2e], 0x87f285e1
mov dword [esp + 0x32], 0x8be389fc
mov dword [esp + 0x36], 0x8fe98de2
mov dword [esp + 0x3a], 0x93ce91e3
mov word [esp + 0x3e], 0x9594
xor eax, eax
xor esi, esi
nop
nop
nop
movzx edx, byte [esp + esi + 0xa]
mov edi, eax
and edi, 0x40
mov ecx, esi
xor ecx, 0x2cf9a960
add ecx, edi
xor ecx, edx
add ecx, 0x9832b4ff
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov byte [esp + esi + 0xa], cl
inc esi
add eax, 2
cmp esi, 0x36
jne 0x41de40
movzx ecx, word [ebp]
mov edx, dword [esp + 4]
mov eax, edx
test cx, cx
je 0x41dea2
add ebp, 2
mov eax, edx
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebp]
add ebp, 2
test cx, cx
jne 0x41de90
mov word [eax], 0
movzx ecx, word [esp + 0xa]
test cx, cx
je 0x41ded1
lea edx, [esp + 0xc]
nop
nop
nop
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 0x41dec0
mov word [eax], 0
movzx ecx, word [ebx]
test cx, cx
je 0x41df01
add ebx, 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 [ebx]
add ebx, 2
test cx, cx
jne 0x41def0
mov word [eax], 0
mov eax, dword [esp + 0x64]
mov edi, dword [eax]
xor eax, eax
nop
nop
cmp word [edi + eax], 0
lea eax, [eax + 2]
jne 0x41df10
lea ecx, [edi + eax]
add ecx, 0xfffffffe
add eax, edi
mov edx, 1
sub edx, eax
and edx, edi
mov eax, edi
not eax
and eax, ecx
sub eax, edx
mov dword [esp], eax
mov eax, dword [esp + 0x68]
mov ebp, dword [eax]
xor ecx, ecx
nop
nop
cmp word [ebp + ecx], 0
lea ecx, [ecx + 2]
jne 0x41df40
lea edx, [ecx + ebp]
add edx, 0xfffffffe
add ecx, ebp
mov esi, 1
sub esi, ecx
and esi, ebp
mov ecx, ebp
not ecx
and ecx, edx
sub ecx, esi
mov eax, dword [esp + 0x6c]
mov ebx, dword [eax]
xor edx, edx
nop
nop
nop
nop
cmp word [ebx + edx], 0
lea edx, [edx + 2]
jne 0x41df70
mov esi, dword [esp]
sar esi, 1
sar ecx, 1
lea eax, [ebx + edx]
add eax, 0xfffffffe
mov dword [esp], eax
add edx, ebx
mov eax, 1
sub eax, edx
and eax, ebx
mov edx, ebx
not edx
and edx, dword [esp]
sub edx, eax
sar edx, 1
add ecx, esi
lea eax, [edx + ecx]
add eax, 0xd
mov ecx, eax
and ecx, 6
xor eax, 6
lea eax, [eax + ecx*2]
test eax, eax
jns 0x41dfbe
mov eax, 0xffffffff
jmp 0x41dfc0
add eax, eax
push eax
call fcn.004080f0
add esp, 4
mov esi, eax
movzx eax, word [edi]
mov dword [esp], esi
test ax, ax
je 0x41dff1
add edi, 2
mov esi, dword [esp]
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [edi]
add edi, 2
test ax, ax
jne 0x41dfe0
mov word [esi], 0x2f
mov dword [esp + 0xa], 0x83c781af
mov dword [esp + 0xe], 0x87f285fc
mov dword [esp + 0x12], 0x8be489ed
mov dword [esp + 0x16], 0x8fe78dff
mov dword [esp + 0x1a], 0x93fc91ff
mov dword [esp + 0x1e], 0x97b995e7
mov word [esp + 0x22], 0x9998
xor eax, eax
nop
movzx ecx, byte [esp + eax + 0xa]
mov edi, 0x18b84a7f
sub edi, eax
and edi, 0x10a00825
mov edx, eax
and edx, 0x1a
or edx, edi
mov edi, ecx
and edi, 0x25
or edi, 0x4435d2
and ecx, 0xffffffda
xor ecx, edi
xor ecx, 0x97e6bdf7
mov edi, ecx
and edi, edx
add ecx, edx
add edi, edi
sub ecx, edi
add cl, 0x80
mov byte [esp + eax + 0xa], cl
add eax, 0x5bf3342a
mov ecx, eax
and ecx, 0x57
xor eax, 0xa40ccbd7
lea eax, [eax + ecx*2]
cmp eax, 0x1a
jb 0x41e030
add esi, 2
movzx eax, word [ebp]
test ax, ax
je 0x41e0b2
add ebp, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x41e0a0
mov word [esi], 0
movzx eax, word [esp + 0xa]
test ax, ax
je 0x41e0e1
lea ecx, [esp + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41e0d0
mov word [esi], 0
movzx eax, word [ebx]
test ax, ax
je 0x41e111
add ebx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ebx]
add ebx, 2
test ax, ax
jne 0x41e100
mov word [esi], 0
mov dword [esp + 0xa], 0xe0efee97
mov eax, 0x8133de36
mov ecx, 0x267bc6c
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax + 0x7ecc21d4]
mov ebx, eax
xor ebx, 0x179f2971
mov edx, ecx
and edx, 0x41ac1c
sub edx, ebx
mov ebx, edx
and ebx, edi
mov ebp, edx
xor ebp, edi
sub ebp, edi
add ebp, ebx
not edx
and edx, edi
or edx, ebp
mov edi, edx
xor edi, 0xd6
and edx, 0x56
lea edx, [edi + edx*2]
add dl, 2
mov byte [esp + eax + 0x7ecc21d4], dl
inc eax
add ecx, 2
cmp eax, 0x8133de3a
jne 0x41e130
lea eax, [esp + 0xa]
push 0
push 0
push 0xc00000
push eax
mov edi, dword [esp + 0x14]
push edi
push dword [esp + 0x14]
push dword [esp + 0x78]
call fcn.00421e20
add esp, 0x1c
mov ebx, eax
jmp dword [0x444a04]