Function at 0x4152f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xe0
mov eax, dword [ebp + 0xc]
mov esi, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [eax + esi + 2], 0
lea esi, [esi + 2]
jne 0x415310
sar esi, 1
lea edi, [esp + 0x90]
push edi
push 0
push 0
push esi
push eax
push 0
call dword [0x44646c]
mov ebx, dword [esp + 0x90]
test ebx, ebx
jns 0x415345
mov eax, 0xffffffff
jmp 0x415348
lea eax, [ebx + ebx]
push eax
call fcn.00408c60
add esp, 4
push edi
push ebx
mov dword [esp + 0x60], eax
push eax
push esi
push dword [ebp + 0xc]
push 0
call dword [0x44646c]
mov dword [esp + 0x18], 0xa37ead40
mov dword [esp + 0x1c], 0xa751a141
mov dword [esp + 0x20], 0xbb9aa550
mov dword [esp + 0x24], 0xbf5bb952
mov dword [esp + 0x28], 0xb345bd4a
mov dword [esp + 0x2c], 0xb745b149
mov dword [esp + 0x30], 0x4b4ab546
lea eax, [esp + 0x34]
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov byte [esp + 0x3c], 0
mov dword [esp + 0x98], 0
mov ecx, dword [esp + 0x98]
cmp ecx, 0x24
ja 0x415432
nop
nop
nop
nop
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x98]
movzx edx, byte [esp + edx + 0x18]
lea esi, [ecx - 0xe263f9a]
lea edi, [ecx + 0x66]
mov ebx, edi
and ebx, esi
and ebx, edx
xor edi, esi
and edi, edx
add ecx, edx
add ecx, 0xf1d9c066
lea edx, [edi + ebx*2]
sub ecx, edx
mov dword [esp + 0xb4], ecx
mov ecx, dword [esp + 0xb4]
add cl, 0x36
mov edx, dword [esp + 0x98]
mov byte [esp + edx + 0x18], cl
inc dword [esp + 0x98]
mov ecx, dword [esp + 0x98]
cmp ecx, 0x25
jb 0x4153d0
lea edi, [esp + 0x98]
lea edx, [esp + 0x18]
mov ecx, 7
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0xb4]
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov eax, dword [esp + 0x90]
add eax, 0xe
mov ecx, eax
xor ecx, 0xfffffffe
and eax, 0xfffffffe
lea edx, [ecx + eax*2]
inc edx
test edx, edx
jns 0x415477
mov eax, 0xffffffff
jmp 0x41547f
lea eax, [ecx + eax*2]
add eax, eax
add eax, 2
mov esi, dword [esp + 0x58]
push eax
call fcn.00408c60
add esp, 4
mov ebx, eax
movzx ecx, word [esi]
test cx, cx
je 0x4154b1
lea edx, [esi + 2]
mov eax, ebx
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x4154a0
mov word [eax], 0
movzx ecx, word [esp + 0x98]
test cx, cx
je 0x4154e1
lea edx, [esp + 0x9a]
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x4154d0
mov word [eax], 0
lea eax, [esp + 0x50]
push 0x60
push 3
push 0x120089
push eax
push ebx
call fcn.00438790
add esp, 0x14
not eax
shr eax, 0x1f
mov eax, dword [eax*4 + 0x43f75c]
mov ecx, 0x13bffd4
xor ecx, dword [0x43f764]
add eax, ecx
inc eax
jmp eax
mov dh, 0x43
add al, dl
mov bh, 0x43
add al, ah
mov bh, 0x43
add byte [eax], al
mov eax, 0xb3900043
inc ebx
add byte [eax - 0x4d], dh
inc ebx
add byte [eax - 2], dl
inc ecx
add byte [eax - 2], dl
inc ecx
add byte [eax - 2], dl
inc ecx
add byte [0x850041ff], al
push es
inc edx
add byte [edi + edi*8], cl
inc ecx
add byte [eax - 0x6fffbdfa], dl
push es
inc edx
add byte [eax - 0x6dffbdfa], dl
push es
inc edx
add byte [ebx - 0x2fffbe00], bh
add al, 0x42
add byte [ebx - 0x19ffbdff], dl
add byte [edx], al
pushal
add dword [edx], eax
pop ecx
add al, byte [edx]
stosb byte es:[edi], al
add al, byte [edx]
rol byte [edx], 0x42
add dl, ah
add al, byte [edx]
lock add al, byte [edx]
fild dword [ebx]
inc edx
add byte [esi - 0x5cffbdfd], ah
add al, 0x42
add byte [eax + 2], al
inc edx
add byte [ecx - 0x4dffbdfc], ch
add al, 0x42
add byte [ecx + 0x40004204], ch
add al, byte [edx]
add byte [ecx], 0x42
add byte [edx + 1], dh
inc edx
add byte [eax - 0x6cffbdff], al
add dword [edx], eax
cdq
add dword [edx], eax
and al, 5
inc edx
add byte [eax + 0x5f00042], ah
inc edx
add byte [eax], dl
push es
inc edx
add dl, bh
add eax, 0x6100042
inc edx
add byte [0x30004206], bl
push es
inc edx
add byte [eax], dh
push es
inc edx
add byte [ecx], bh
push es
inc edx
add byte [eax], dh
push es
inc edx
add byte [eax], dl
push es
inc edx
add byte [eax], dl
push es
inc edx
add byte [eax], dl
push es
inc edx
add byte [ecx], bh
push es
inc edx
add byte [eax + 6], dl
inc edx
add byte [eax + 6], dl
inc edx
add byte [eax + 6], dl
inc edx
add byte [edx + 6], dl
inc edx
add byte [ecx + 6], bl
inc edx
add byte [eax + 6], ah
inc edx
add byte [ecx + 6], dh
inc edx
add al, dh
inc byte [ecx]
xchg edx, eax
push es
inc edx
add byte [0x920041ff], al
push es
inc edx
add byte [0xc20041ff], al
or byte [edx], al
mov cl, 6
inc edx
add byte [ebx - 0x53ffbdf8], ah
or byte [edx], al
ror byte [eax], 0x42
add al, al
or byte [edx], al
ror byte [eax], 0x42
add dl, al
or byte [edx], al
jb 0x4416c4
inc edx
add byte [eax - 0x5fffbdf2], ah
push cs
inc edx
add byte [eax + 0xa00420e], ah
adc eax, 0xea00042
or dl, byte [0xea00042]
inc edx
add byte [eax - 0x57ffbdf2], dl
push cs
inc edx
add byte [eax - 0x6fffbdf2], dl
push cs
inc edx
add byte [eax + 0xa00420e], dl
inc edx
add byte [edx], cl
inc edx
add byte [edx], cl
adc eax, 0xfb30042
inc edx
add ah, ch
adc eax, dword [edx]
invalid