Function at 0x41ebe0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x158
mov edi, edx
mov ebx, ecx
call fcn.00404d60
mov dword [esp + 0x28], eax
push eax
call fcn.00404680
add esp, 4
mov dword [esp + 0x18], eax
mov eax, dword [edi + 0x38]
mov dword [esp + 0x20], eax
mov dword [esp + 0x2c], edi
mov edi, dword [edi + 0x3c]
lea esi, [esp + 0x30]
push 0x120
push 0
push esi
call fcn.0040ca10
add esp, 0xc
mov dword [esp + 0x24], ebx
mov ecx, ebx
push 0
push 0
push 0x120
push esi
push edi
push dword [esp + 0x34]
call fcn.0043edd0
test eax, eax
js 0x41f0a9
mov dword [esp + 8], 0xbeb1c4b2
mov byte [esp + 0xc], 0x20
mov dword [esp + 0xd], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 8
ja 0x41ecd2
nop
nop
nop
nop
nop
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, 0x3ec215f9
add eax, eax
and eax, 0x7d842bf2
mov esi, eax
and esi, edx
xor eax, edx
lea eax, [eax + esi*2]
lea edx, [eax + ecx]
and eax, ecx
mov ecx, edx
xor ecx, eax
add ecx, eax
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x23
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 9
jb 0x41ec80
lea edx, [esp + 0x38]
lea eax, [esp + 8]
mov edi, dword [esp + 0x24]
mov ecx, edi
push dword [esp + 0x18]
push eax
call fcn.0041f170
add esp, 8
mov ebx, eax
mov dword [esp + 8], 0xc6c2dcca
mov word [esp + 0xc], 0x33d7
mov dword [esp + 0xe], 0
mov word [esp + 0x12], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x41ed6d
nop
nop
nop
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx eax, byte [esp + eax + 8]
mov edx, ecx
xor edx, 0xaa183ff5
add ecx, ecx
and ecx, 0x54307fea
mov esi, ecx
and esi, edx
xor ecx, edx
lea ecx, [ecx + esi*2]
mov edx, ecx
add ecx, eax
not eax
or edx, eax
sub eax, edx
lea eax, [ecx + eax*2]
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x37
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x41ed20
lea edx, [esp + 0x118]
mov ecx, edi
push dword [esp + 0x18]
lea eax, [esp + 0xc]
push eax
call fcn.0041f170
add esp, 8
mov byte [esp + 0x20], al
mov dword [esp + 8], 0xa5a7aa94
mov dword [esp + 0xc], 0xa28db299
mov byte [esp + 0x10], 0x24
mov dword [esp + 0x11], 0
mov word [esp + 0x15], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xe
ja 0x41ee1c
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx edx, byte [esp + ecx + 8]
mov ecx, eax
xor ecx, 0xc693c1cb
mov esi, eax
xor esi, 0x396c3e34
or eax, 0x4693c1cb
and eax, esi
lea ecx, [ecx + eax*2]
lea eax, [ecx + edx]
and ecx, edx
mov edx, eax
xor edx, ecx
mov esi, ecx
not esi
and eax, esi
add eax, eax
sub eax, edx
xor ecx, eax
and eax, esi
add eax, eax
sub eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 9
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xf
jb 0x41edc0
lea edx, [esp + 0x50]
mov ecx, edi
push dword [esp + 0x18]
lea eax, [esp + 0xc]
push eax
call fcn.0041f170
add esp, 8
mov byte [esp + 0x1f], al
mov dword [esp + 8], 0x373a2838
mov byte [esp + 0xc], 0x8c
mov dword [esp + 0xd], 0
mov word [esp + 0x11], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xa
ja 0x41eea9
nop
nop
nop
nop
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, 0xef48c7e2
and eax, 0xef48c7e2
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x96
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xb
jb 0x41ee70
and bl, byte [esp + 0x20]
lea edx, [esp + 0x68]
mov ecx, edi
push dword [esp + 0x18]
lea eax, [esp + 0xc]
push eax
call fcn.0041f170
add esp, 8
mov byte [esp + 0x20], al
fild qword [esp + 0x130]
mov dword [esp + 8], 0xb6aea1bd
mov dword [esp + 0xc], 0xc0d5b8aa
mov dword [esp + 0x10], 0x67c1d5d5
mov dword [esp + 0x14], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xf
ja 0x41ef39
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0xdd83a93a
and eax, 0xdd83a93a
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0xde
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x10
jb 0x41ef00
and bl, byte [esp + 0x1f]
sub esp, 0x10
fstp qword [esp + 8]
lea eax, [esp + 0x18]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call fcn.004060c0
add esp, 0x10
mov esi, eax
movzx eax, byte [esp + 0x88]
mov dword [esp + 8], 0x3c273a2f
mov dword [esp + 0xc], 0x3f3d2e2f
mov word [esp + 0x10], 0x8f23
mov dword [esp + 0x12], 0
mov byte [esp + 0x16], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xe
ja 0x41efe2
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 8]
mov edi, ecx
xor edi, 0x711c8e61
and ecx, 0xf11c8e61
lea ecx, [edi + ecx*2]
lea edi, [ecx + edx]
and ecx, edx
add ecx, ecx
sub edi, ecx
mov dword [esp + 4], edi
mov ecx, dword [esp + 4]
add cl, 0x1b
mov edx, dword [esp]
mov byte [esp + edx + 8], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xf
jb 0x41efa0
and bl, byte [esp + 0x20]
push eax
lea eax, [esp + 0xc]
push eax
push dword [esp + 0x20]
call fcn.00406150
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x88]
mov dword [esp + 8], 0x414a4b44
mov dword [esp + 0xc], 0x494c4251
mov word [esp + 0x10], 0x37bf
mov dword [esp + 0x12], 0
or edi, esi
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xd
ja 0x41f08e
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, 0xb71aa735
and ecx, 0x371aa735
lea ecx, [esi + ecx*2]
lea esi, [ecx + edx]
and ecx, edx
add ecx, ecx
sub esi, ecx
mov dword [esp + 4], esi
mov ecx, dword [esp + 4]
mov edx, ecx
not edx
and edx, 9
and ecx, 0xf6
sub ecx, edx
mov edx, dword [esp]
mov byte [esp + edx + 8], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xe
jb 0x41f040
push eax
lea eax, [esp + 0xc]
push eax
push dword [esp + 0x20]
call fcn.00406150
add esp, 0xc
or edi, eax
sete al
and bl, al
jmp 0x41f0ab
xor ebx, ebx
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, eax
or ecx, edx
mov edi, dword [esp + 0x24]
je 0x41f102
mov ecx, edi
push 0
push 0
push 0x40
lea esi, [esp + 0x3c]
push esi
push edx
push eax
call fcn.0043edd0
test eax, eax
js 0x41f102
movzx edi, bl
lea edx, [esp + 0x30]
mov ecx, dword [esp + 0x24]
push dword [ebp + 8]
call fcn.0041ebe0
add esp, 4
movzx eax, al
mov ecx, eax
not ecx
and ecx, edi
xor eax, edi
add eax, edi
mov edi, dword [esp + 0x24]
cmp eax, ecx
setne bl
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 8]
mov edx, dword [ecx + 0xc]
mov ecx, eax
or ecx, edx
je 0x41f13d
mov ecx, edi
push 0
push 0
push 0x40
lea esi, [esp + 0x3c]
push esi
push edx
push eax
call fcn.0043edd0
test eax, eax
js 0x41f13d
lea edx, [esp + 0x30]
mov ecx, edi
push dword [ebp + 8]
call fcn.0041ebe0
add esp, 4
or bl, al
test bl, bl
je 0x41f152
push dword [esp + 0x28]
push dword [ebp + 8]
call fcn.00405a60
add esp, 8
jmp 0x41f15e
push dword [esp + 0x28]
call fcn.00404c30
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret