Function at 0x10040390
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100e4005
mov eax, dword fs:[0]
push eax
sub esp, 0x74
mov eax, dword [0x10114d18]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
lea eax, [ebp - 0x80]
push eax
call fcn.100b1bfa
mov eax, dword fs:[0x2c]
add esp, 4
mov ecx, dword [0x1012ce30]
mov esi, dword [eax + ecx*4]
mov eax, dword [0x1012c890]
cmp eax, dword [esi + 4]
jg 0x10040569
mov eax, dword [0x1012c8a0]
cmp eax, dword [esi + 4]
jg 0x1004063a
mov esi, dword [ebp - 0x80]
sub esi, dword [0x1012c898]
mov edi, dword [ebp - 0x7c]
sbb edi, dword [0x1012c89c]
push 0
push 0x15180
push dword [0x1012c88c]
push dword [0x1012c888]
call fcn.10085c40
cmp edi, edx
jg 0x1004047d
jl 0x1004042b
cmp esi, eax
ja 0x1004047d
cmp byte [0x1012c854], 0
je 0x1004047d
test edi, edi
jl 0x1004048c
jg 0x1004043e
test esi, esi
je 0x1004048c
push 0
push 0x15180
push edi
push esi
call fcn.10085b90
mov ecx, dword [0x1012c888]
sub ecx, eax
mov eax, dword [0x1012c88c]
sbb eax, edx
test eax, eax
jg 0x1004048c
jl 0x10040466
cmp ecx, 4
jae 0x1004048c
cmp byte [0x101131f0], 0
je 0x1004048c
mov byte [0x101131f0], 0
call fcn.10031820
jmp 0x1004048c
call fcn.100384d0
push 1
call fcn.1003f6e0
add esp, 4
xor eax, eax
mov byte [0x1012c854], 0
mov esi, fcn.1002dd50
mov byte [ebp - 0x65], 1
push 8
add esi, 0x28e
mov word [ebp - 0x64], ax
mov byte [ebp - 0x62], al
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], eax
call fcn.100858c4
lea ecx, [ebp - 0x5c]
xorps xmm0, xmm0
mov dword [eax + 4], 0
mov dword [ebp - 0x5c], eax
mov dword [eax], ecx
mov word [ebp - 0x40], 0
movups xmmword [ebp - 0x3d], xmm0
mov word [ebp - 0x2d], 0
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x44], 0
lea eax, [ebp - 0x65]
mov dword [ebp - 4], 2
push eax
push 0x28e
lea eax, [ebp - 0x64]
push esi
push eax
call fcn.10034e20
mov al, byte [ebp - 0x62]
lea ecx, [ebp - 0x5c]
add esp, 0x14
mov byte [ebp - 0x66], al
mov dword [ebp - 4], 0xffffffff
call fcn.10016df0
mov eax, dword [ebp - 0x5c]
push 8
push eax
mov dword [ebp - 0x5c], 0
call fcn.100858f4
add esp, 8
cmp byte [ebp - 0x66], 0
jne 0x1004054c
push 2
call fcn.1003f6e0
add esp, 4
xor al, al
jmp 0x1004054e
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.100858b1
mov esp, ebp
pop ebp
ret
push 0x1012c890
call fcn.10085a3a
add esp, 4
cmp dword [0x1012c890], 0xffffffff
jne 0x100403e6
mov dword [ebp - 0x28], 7
xor edx, edx
mov byte [ebp - 0x24], 0x35
mov byte [ebp - 0x23], 0x35
mov byte [ebp - 0x22], 0x31
mov al, byte [ebp - 0x24]
mov dword [ebp - 4], 0
mov byte [ebp - 0x21], 0
jmp 0x100405b0
mov al, byte [ebp + edx - 0x24]
mov ecx, dword [ebp - 0x28]
xor cl, al
mov byte [ebp + edx - 0x24], cl
inc edx
cmp edx, 3
jb 0x100405b0
mov byte [ebp - 0x21], 0
mov eax, dword [ebp - 0x28]
mov byte [ebp - 0x70], al
lea eax, [ebp - 0x70]
push eax
push str._with_key_0x
push 0
push str.____Select_MetaString4_implementation_
push 0x1012ca98
mov dword [ebp - 0x6c], 2
call fcn.10002460
add esp, 8
mov ecx, eax
call fcn.10003830
push eax
call fcn.10002460
add esp, 8
push eax
call fcn.10007300
push eax
call fcn.10002840
lea eax, [ebp - 0x24]
push eax
call fcn.100b0ee1
push 0x1012c890
mov dword [0x1012c888], eax
mov dword [0x1012c88c], edx
mov dword [ebp - 4], 0xffffffff
call fcn.100859f0
add esp, 0x14
jmp 0x100403e6
push 0x1012c8a0
call fcn.10085a3a
add esp, 4
cmp dword [0x1012c8a0], 0xffffffff
jne 0x100403f7
mov dword [ebp - 0x20], 0x74
mov eax, dword [ebp - 0x20]
xor al, 0x31
mov dword [ebp - 4], 1
mov byte [ebp - 0x1c], al
mov eax, dword [ebp - 0x20]
inc al
xor al, 0x36
mov byte [ebp - 0x1b], al
mov eax, dword [ebp - 0x20]
add al, 2
xor al, 0x34
mov byte [ebp - 0x1a], al
mov eax, dword [ebp - 0x20]
add al, 3
xor al, 0x30
mov byte [ebp - 0x19], al
mov eax, dword [ebp - 0x20]
add al, 4
xor al, 0x34
mov byte [ebp - 0x18], al
mov eax, dword [ebp - 0x20]
add al, 5
xor al, 0x33
mov byte [ebp - 0x17], al
mov eax, dword [ebp - 0x20]
add al, 6
xor al, 0x34
mov byte [ebp - 0x16], al
mov eax, dword [ebp - 0x20]
add al, 7
xor al, 0x34
mov byte [ebp - 0x15], al
mov eax, dword [ebp - 0x20]
add al, 8
xor al, 0x30
mov byte [ebp - 0x14], al
mov eax, dword [ebp - 0x20]
add al, 9
mov byte [ebp - 0x12], 0
xor al, 0x31
xor edx, edx
mov byte [ebp - 0x13], al
mov al, byte [ebp - 0x1c]
jmp 0x100406d0
mov al, byte [ebp + edx - 0x1c]
mov ecx, dword [ebp - 0x20]
add cl, dl
xor cl, al
mov byte [ebp + edx - 0x1c], cl
inc edx
cmp edx, 0xa
jb 0x100406d0
mov byte [ebp - 0x12], 0
mov al, byte [ebp - 0x1c]
mov byte [ebp - 0x78], al
lea eax, [ebp - 0x78]
push eax
push str._with_key_0x
push 1
push str.____Select_MetaString4_implementation_
push 0x1012ca98
mov dword [ebp - 0x74], 2
call fcn.10002460
add esp, 8
mov ecx, eax
call fcn.10003830
push eax
call fcn.10002460
add esp, 8
push eax
call fcn.10007300
push eax
call fcn.10002840
lea eax, [ebp - 0x1c]
push eax
call fcn.100b0ee1
push 0x1012c8a0
mov dword [0x1012c898], eax
mov dword [0x1012c89c], edx
mov dword [ebp - 4], 0xffffffff
call fcn.100859f0
add esp, 0x14
jmp 0x100403f7