Function at 0x41f8d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x158
mov ebx, edx
mov esi, ecx
call fcn.004048a0
mov dword [esp + 0x28], eax
push eax
call fcn.00404500
add esp, 4
mov dword [esp + 0x20], eax
mov eax, dword [ebx + 0x38]
mov dword [esp + 0x18], eax
mov dword [esp + 0x2c], ebx
mov ebx, dword [ebx + 0x3c]
lea edi, [esp + 0x30]
push 0x120
push 0
push edi
call fcn.0040c6b0
add esp, 0xc
mov dword [esp + 0x24], esi
mov ecx, esi
push 0
push 0
push 0x120
push edi
push ebx
push dword [esp + 0x2c]
call fcn.0043fb10
test eax, eax
js 0x41fd6e
mov dword [esp + 8], 0x7a63687a
mov byte [esp + 0xc], 0xd4
mov dword [esp + 0xd], 0
mov dword [esp + 0x10], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x41f9b4
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx eax, byte [esp + eax + 8]
mov edx, ecx
xor edx, 0x1664ba2e
and ecx, 0x1664ba2e
lea ecx, [edx + ecx*2]
lea edx, [ecx + eax]
not eax
or ecx, eax
sub eax, ecx
lea eax, [edx + eax*2]
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x1a
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x41f970
lea edx, [esp + 0x38]
lea edi, [esp + 8]
mov ebx, dword [esp + 0x24]
mov ecx, ebx
mov esi, dword [esp + 0x20]
push esi
push edi
call fcn.0041fe20
add esp, 8
mov byte [esp + 0x18], al
mov dword [esp + 8], 0x7e66107e
mov dword [esp + 0xc], 0xed71
mov byte [esp + 0x10], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 8
ja 0x41fa39
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0xad5607ac
and eax, 0x2d5607ac
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0xa4
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 9
jb 0x41fa00
lea edx, [esp + 0x118]
mov ecx, ebx
push esi
push edi
call fcn.0041fe20
add esp, 8
mov dword [esp + 8], 0xb7b1beb8
mov dword [esp + 0xc], 0xaec3becb
mov byte [esp + 0x10], 0xd8
mov word [esp + 0x11], 0
mov byte [esp + 0x13], 0
and byte [esp + 0x18], al
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x41fab9
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0x96860df8
and eax, 0x16860df8
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x28
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x41fa80
lea edx, [esp + 0x50]
mov ecx, ebx
push esi
push edi
call fcn.0041fe20
add esp, 8
mov dword [esp + 8], 0x19ea0414
mov byte [esp + 0xc], 0x60
mov dword [esp + 0xd], 0
mov dword [esp + 0x10], 0
and byte [esp + 0x18], al
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x41fb49
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx eax, byte [esp + eax + 8]
mov edx, ecx
xor edx, 0x283de969
add ecx, ecx
and ecx, 0x507bd2d2
mov edi, ecx
and edi, edx
xor ecx, edx
lea ecx, [ecx + edi*2]
lea edx, [ecx + eax]
and ecx, eax
add ecx, ecx
sub edx, ecx
mov dword [esp + 4], edx
mov eax, dword [esp + 4]
add al, 0xf3
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x41fb00
lea edx, [esp + 0x68]
mov ecx, ebx
push esi
lea edi, [esp + 0xc]
push edi
call fcn.0041fe20
add esp, 8
fild qword [esp + 0x130]
mov dword [esp + 8], 0x61a130f
mov dword [esp + 0xc], 0xc1b041e
mov dword [esp + 0x10], 0xf1170717
mov word [esp + 0x14], 0
and byte [esp + 0x18], al
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xd
ja 0x41fbd9
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0x91b47ba7
and eax, 0x11b47ba7
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0xbd
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xe
jb 0x41fba0
sub esp, 0x10
fstp qword [esp + 8]
mov dword [esp + 4], edi
mov dword [esp], esi
call fcn.00405ca0
add esp, 0x10
xor ebx, ebx
test eax, eax
sete bl
movzx edi, byte [esp + 0x18]
not edi
movzx eax, byte [esp + 0x88]
mov dword [esp + 0x18], eax
mov dword [esp + 8], 0xec07ea1f
mov dword [esp + 0xc], 0xfed1e1f
mov word [esp + 0x10], 0x7f03
mov dword [esp + 0x12], 0
mov word [esp + 0x16], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xf
ja 0x41fc93
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx esi, byte [esp + edx + 8]
mov edx, ecx
xor edx, 0xce81a9e9
and ecx, 0xce81a9e9
lea edx, [edx + ecx*2]
lea ecx, [edx + esi]
and edx, esi
mov esi, ecx
not esi
and esi, edx
mov eax, edx
not eax
and ecx, eax
sub ecx, esi
xor edx, ecx
and ecx, eax
add ecx, ecx
sub ecx, edx
mov dword [esp + 4], ecx
mov eax, dword [esp + 4]
add al, 0x73
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x10
jb 0x41fc40
or ebx, edi
push dword [esp + 0x18]
lea eax, [esp + 0xc]
push eax
push dword [esp + 0x28]
call fcn.00405d30
add esp, 0xc
mov dword [esp + 0x18], eax
movzx eax, byte [esp + 0x88]
mov dword [esp + 8], 0x797e7f4c
mov dword [esp + 0xc], 0x417c7e49
mov dword [esp + 0x10], 0xd373
mov byte [esp + 0x14], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xc
ja 0x41fd48
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 8]
mov esi, ecx
xor esi, 0x6ff448d7
and ecx, 0xeff448d7
lea ecx, [esi + ecx*2]
lea esi, [ecx + edx]
and ecx, edx
mov edx, esi
xor edx, ecx
add edx, ecx
not ecx
and ecx, esi
add ecx, ecx
sub ecx, edx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
mov edx, ecx
not edx
and edx, 0x33
and ecx, 0xcc
sub ecx, edx
mov edx, dword [esp]
mov byte [esp + edx + 8], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xd
jb 0x41fcf0
cmp ebx, edi
setne byte [esp + 0x1f]
push eax
lea eax, [esp + 0xc]
push eax
push dword [esp + 0x28]
call fcn.00405d30
add esp, 0xc
or eax, dword [esp + 0x18]
sete bl
and bl, byte [esp + 0x1f]
jmp 0x41fd70
xor ebx, ebx
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, eax
or ecx, edx
je 0x41fdae
mov esi, dword [esp + 0x24]
mov ecx, esi
push 0
push 0
push 0x40
lea edi, [esp + 0x3c]
push edi
push edx
push eax
call fcn.0043fb10
test eax, eax
js 0x41fdae
lea edx, [esp + 0x30]
mov ecx, esi
push dword [ebp + 8]
call fcn.0041f8d0
add esp, 4
or bl, al
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 8]
mov edx, dword [ecx + 0xc]
mov ecx, eax
or ecx, edx
je 0x41fded
mov esi, dword [esp + 0x24]
mov ecx, esi
push 0
push 0
push 0x40
lea edi, [esp + 0x3c]
push edi
push edx
push eax
call fcn.0043fb10
test eax, eax
js 0x41fded
lea edx, [esp + 0x30]
mov ecx, esi
push dword [ebp + 8]
call fcn.0041f8d0
add esp, 4
or bl, al
test bl, bl
je 0x41fe02
push dword [esp + 0x28]
push dword [ebp + 8]
call fcn.00405640
add esp, 8
jmp 0x41fe0e
push dword [esp + 0x28]
call fcn.00404770
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret