Function at 0x40ee86
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x180
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov dword [esp + 0x170], 0x3724f069
mov esi, dword [esp + 0x178]
mov byte [esp + 0x157], 0x5b
mov bl, byte [esp + 0x157]
mov dword [esp + 0x148], 0x5ee5734d
mov edi, dword [esp + 0x160]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x164]
mov dword [esp + 0x24], eax
mov eax, edi
xor eax, 0x4c209ae8
mov dword [esp + 0x20], eax
lea eax, [esp + 0x3b]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x160], eax
mov eax, dword [esp + 0x170]
xor eax, 0x43a31837
mov dword [esp + 0x178], 0xe85e0151
mov dword [esp + 0x158], eax
cmp bl, 0xdc
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], esi
mov byte [esp + 0xb], bl
jbe 0x40efdc
jmp 0x40ef6c
xor eax, eax
mov ecx, 0x42
mov dx, word [esp + 0x176]
mov esi, dword [esp + 0x34]
add dx, 0x5431
mov word [esp + 0x176], dx
cmp esi, 0x100
cmove eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0xc]
xor eax, 0x69fcf705
mov dword [esp + 0x178], eax
mov eax, dword [esp + 0x158]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x178], eax
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x24]
imul ecx, edx
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x18]
mul esi
add edx, ecx
add edx, ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x160], eax
mov dword [esp + 0x164], edx
mov bl, byte [esp + ecx + 0x3b]
mov eax, dword [esp + 0x148]
mov byte [esp + 0x33], bl
cmp eax, 0x401b22a9
jne 0x40f0e4
jmp 0x40ef3b
movzx ecx, word [esp + 0x176]
mov edx, dword [esp + 0x170]
add ecx, ecx
mov si, cx
mov word [esp + 0x176], si
mov ecx, 0x3724f069
sub ecx, edx
lea edx, [esp + 0x88]
mov dword [esp + 0x178], 0x3198fbc
mov dword [esp + 0x13c], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x160], edx
mov edi, dword [esp + 0x24]
mov dword [esp + 0x164], edi
mov dword [esp + 0x14c], ecx
mov ecx, dword [esp + 0xc]
imul ebx, ecx, 0x457e1cdf
mov dword [esp + 0x178], ebx
mov byte [esp + 0x15f], al
mov si, word [esp + 0x176]
xor si, 0x1c72
mov word [esp + 0x176], si
jmp 0x40f2eb
mov dword [esp + 0x158], 0
jmp 0x40ef6c
mov al, byte [esp + 0x13b]
mov cx, word [esp + 0x176]
add cx, 0x40a0
mov word [esp + 0x176], cx
mov edx, dword [esp + 0x13c]
mov esi, dword [esp + 0xc]
mov dword [esp + 0x178], esi
mov byte [edx], 0
mov edx, dword [esp + 0x140]
inc edx
mov dword [esp + 0x14c], edx
mov edi, dword [esp + 0x18]
and edi, 0x7fa26993
mov dword [esp + 0x160], edi
mov dword [esp + 0x164], 0
mov byte [esp + 0x15f], al
cmp edx, 0x25
je 0x40f067
jmp 0x40f2eb
mov al, byte [esp + 0x33]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x160], ecx
mov edx, dword [esp + 0x24]
mov dword [esp + 0x164], edx
mov esi, dword [esp + 0x34]
mov ah, byte [esp + 0xb]
add ah, 0x86
mov byte [esp + 0x16f], ah
inc esi
mov byte [esp + 0x16f], 0
mov dword [esp + 0x158], esi
or ecx, 0xa6f5822
mov dword [esp + 0x160], ecx
cmp al, 0
je 0x40ef3b
jmp 0x40ef6c
mov word [esp + 0x176], 0x1000
mov eax, dword [esp + 0x2c]
mov cl, byte [esp + 0x156]
mov edx, dword [esp + 0xc]
mov dword [esp + 0x178], edx
mov dword [esp + 0x150], eax
mov ch, byte [esp + 0xb]
or ch, ch
mov byte [esp + 0x16f], ch
mov byte [esp + 0x147], cl
mov eax, dword [esp + 0x18]
xor eax, 0x1e1ed4b2
mov ecx, dword [esp + 0x150]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x164], edx
mov dword [esp + 0x160], eax
mov eax, dword [esp + 0x140]
mov esi, ecx
imul esi, eax
mov eax, dword [esp + 0xc]
and eax, 0x1bf86361
add esi, 4
mov dword [esp + 0x178], eax
movzx eax, byte [esp + 0x147]
mov edi, dword [esp + 0x18]
not edi
not edx
xor esi, eax
mov dword [esp + 0x164], edx
mov dword [esp + 0x160], edi
mov bx, word [esp + 0x176]
mov eax, esi
movzx edx, al
mov ah, byte [esp + edx + 0x3b]
mov esi, dword [esp + 0x170]
xor esi, 0x3724f04c
or bx, 0x3d8c
mov word [esp + 0x176], bx
mov edi, 0xc7ce0c7d
mov byte [esp + 0xa], ah
mov byte [esp + 9], al
mov eax, ecx
mov dword [esp + 4], edx
mul edi
shr edx, 5
imul eax, edx, 0x29
mov edx, ecx
sub edx, eax
mov al, byte [esp + 0xa]
inc al
mov ah, byte [esp + 0xb]
add ah, 0x57
mov edi, dword [0x457ba8]
mov byte [esp + 0x16f], ah
mov ah, byte [edi + edx]
mov dl, byte [esp + 0xb]
add dl, 0xe3
mov byte [esp + 0x16f], dl
mov edi, dword [esp + 0x14]
mov dl, byte [edi + ecx]
mov edi, dword [esp + 0xc]
mov dword [esp + 0x178], edi
sub dl, ah
mov edi, dword [esp + 0x10]
mov byte [edi + ecx], dl
movzx edx, word [esp + 0x176]
add edx, edx
mov bx, dx
mov word [esp + 0x176], bx
xor ah, al
mov al, byte [esp + 0xb]
mov byte [esp + 0x16f], al
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x3b], ah
add ecx, esi
mov byte [esp + 0x16f], 0x76
mov ah, byte [esp + 9]
mov byte [esp + 0x13b], ah
mov esi, dword [esp + 0x18]
xor esi, 0x7f6dc371
mov dword [esp + 0x160], esi
mov esi, dword [esp + 0x24]
mov dword [esp + 0x164], esi
mov dword [esp + 0x150], ecx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x160], edx
mov byte [esp + 0x147], ah
mov edx, dword [esp + 0x28]
cmp ecx, edx
jb 0x40f175
jmp 0x40f077
mov eax, dword [esp + 0x18]
mov dword [esp + 0x160], eax
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x164], ecx
mov dl, byte [esp + 0x15f]
mov byte [esp + 0x156], dl
mov esi, dword [esp + 0x14c]
mov dword [esp + 0x140], esi
mov dl, byte [esp + 0xb]
xor dl, 0xff
mov esi, dword [esp + 0x140]
mov esi, dword [esi*4 + 0x457bac]
mov byte [esp + 0x16f], dl
mov dword [esp + 0x2c], esi
mov di, word [esp + 0x176]
mov esi, dword [esp + 0x2c]
mov bx, word [esp + 0x176]
mov dl, byte [esp + 0x156]
sub di, bx
mov word [esp + 0x176], di
mov byte [esp + 0x13b], dl
mov eax, dword [esp + 0x28]
cmp esi, eax
jb 0x40f13a
jmp 0x40f077