Function at 0x40dd90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x178
mov esi, esp
push eax
push eax
mov eax, esp
mov dword [esi + 0x98], eax
mov dword [esi + 0x58], eax
sub esp, 8
mov eax, esp
mov dword [esi + 0x94], eax
mov dword [esi + 0xd4], eax
sub esp, 8
mov eax, esp
mov dword [esi + 0x90], eax
mov dword [esi + 0x54], eax
push eax
mov dword [esi + 0x7c], esp
sub esp, 0x68
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x8c], eax
mov esp, eax
push eax
push eax
mov eax, esp
mov dword [esi + 0xec], eax
mov edx, eax
sub esp, 8
mov ecx, esp
sub esp, 8
mov eax, esp
mov dword [esi + 0xe8], eax
mov dword [esi + 0x134], eax
sub esp, 8
mov dword [esi + 0xa4], esp
sub esp, 8
mov eax, esp
mov dword [esi + 0xe4], eax
mov dword [esi + 0xa0], eax
sub esp, 8
mov dword [esi + 0x130], esp
mov dword [esi + 0x140], edx
mov dword [esi + 0x13c], ecx
sub esp, 8
mov dword [esi + 0x12c], esp
sub esp, 8
mov dword [esi + 0xe0], esp
sub esp, 8
mov dword [esi + 0x9c], esp
sub esp, 8
mov dword [esi + 0x128], esp
sub esp, 8
mov dword [esi + 0xdc], esp
sub esp, 8
mov dword [esi + 0xd8], esp
sub esp, 0x10
mov dword [esi + 0x78], esp
push eax
mov dword [esi + 0x88], esp
sub esp, 0x68
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x60], eax
mov esp, eax
push eax
push eax
mov dword [esi + 0x50], esp
push eax
mov dword [esi + 0x5c], esp
sub esp, 8
mov dword [esi + 0xa8], esp
sub esp, 8
mov dword [esi + 0xb8], esp
sub esp, 8
mov dword [esi + 0x84], esp
sub esp, 8
mov dword [esi + 0xbc], esp
sub esp, 0x68
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xac], eax
mov esp, eax
push eax
sub esp, 8
mov dword [esi + 0x138], esp
sub esp, 8
mov dword [esi + 0x80], esp
sub esp, 0x50
mov dword [esi + 0x64], esp
sub esp, 8
mov dword [esi + 0xf4], esp
sub esp, 8
mov dword [esi + 0xb4], esp
sub esp, 8
mov dword [esi + 0xb0], esp
sub esp, 8
mov dword [esi + 0x158], esp
sub esp, 8
mov dword [esi + 0x154], esp
sub esp, 8
mov dword [esi + 0x100], esp
sub esp, 0x68
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xf0], eax
mov esp, eax
mov word [esi + 0xc], 0x1bb1
mov dword [esi + 0xe], 0
mov byte [esi + 0x12], 0
mov dword [esi + 0x24], 0
mov eax, dword [esi + 0x24]
cmp eax, 6
ja 0x40df83
nop
nop
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x24]
movzx edx, byte [esi + ecx + 0xc]
lea ecx, [eax + edx]
add ecx, 0x4fdd663b
add eax, 0x4fdd663b
and eax, edx
mov edx, ecx
xor edx, eax
add edx, eax
not eax
and eax, ecx
add eax, eax
sub eax, edx
mov dword [esi + 4], eax
mov eax, dword [esi + 4]
add al, 0xd9
mov ecx, dword [esi + 0x24]
mov byte [esi + ecx + 0xc], al
inc dword [esi + 0x24]
mov eax, dword [esi + 0x24]
cmp eax, 7
jb 0x40df40
lea eax, [esi + 0xc]
push eax
push dword [ebp + 8]
call fcn.00401b10
add esp, 8
xor ecx, ecx
mov dword [esi + 0xc0], eax
test eax, eax
sete cl
xor eax, eax
jmp dword [ecx*4 + 0x445850]
mov eax, dword [esi + 0x80]
inc eax
mov dword [esi + 0x120], eax
mov eax, dword [esi + 0xd8]
add eax, 3
mov dword [esi + 0x11c], eax
mov eax, dword [esi + 0xdc]
add eax, 2
mov dword [esi + 0x118], eax
mov eax, dword [esi + 0x9c]
add eax, 2
mov dword [esi + 0x114], eax
mov eax, dword [esi + 0xe0]
add eax, 2
mov dword [esi + 0x110], eax
add dword [esi + 0xe4], 2
add dword [esi + 0xe8], 2
add dword [esi + 0xec], 2
mov eax, dword [esi + 0x100]
add eax, 3
mov dword [esi + 0x150], eax
mov eax, dword [esi + 0xb0]
add eax, 3
mov dword [esi + 0xfc], eax
mov eax, dword [esi + 0xf4]
add eax, 2
mov dword [esi + 0x144], eax
mov eax, dword [esi + 0x64]
add eax, 0x4a
mov dword [esi + 0x124], eax
mov eax, dword [esi + 0x84]
add eax, 3
mov dword [esi + 0x14c], eax
mov eax, dword [esi + 0xb8]
add eax, 3
mov dword [esi + 0x148], eax
mov eax, dword [esi + 0xa8]
add eax, 3
mov dword [esi + 0xf8], eax
mov eax, dword [esi + 0x50]
add eax, 2
mov dword [esi + 0x104], eax
add dword [esi + 0x90], 3
add dword [esi + 0x94], 3
add dword [esi + 0x98], 2
xor edi, edi
nop
push dword [esi + 0xc0]
call fcn.00402060
add esp, 4
xor ecx, ecx
cmp edi, eax
setb cl
mov al, 1
jmp dword [ecx*4 + 0x445858]
mov edx, edi
mov dword [esi + 0x40], edi
jmp dword [0x445860]
push edx
push dword [esi + 0xc0]
call fcn.00402070
add esp, 8
mov word [esi + 0xc], 0x9f08
lea ecx, [esi + 0xe]
mov byte [ecx + 4], 0
mov dword [ecx], 0
mov dword [esi + 0x24], 0
mov ecx, dword [esi + 0x24]
cmp ecx, 6
ja 0x40e141
nop
nop
nop
nop
nop
nop
mov ecx, dword [esi + 0x24]
mov edx, dword [esi + 0x24]
movzx edi, byte [esi + edx + 0xc]
lea edx, [ecx + edi]
add edx, 0x3959a925
add ecx, 0x3959a925
and ecx, edi
mov edi, edx
not edi
and edi, ecx
add edi, ecx
not ecx
and ecx, edx
sub ecx, edi
mov dword [esi + 4], ecx
mov ecx, dword [esi + 4]
mov edx, ecx
not edx
and edx, 0xb9
and ecx, 0x46
sub ecx, edx
mov edx, dword [esi + 0x24]
mov byte [esi + edx + 0xc], cl
inc dword [esi + 0x24]
mov ecx, dword [esi + 0x24]
cmp ecx, 7
jb 0x40e0f0
push 3
lea ecx, [esi + 0xc]
push ecx
push eax
call fcn.00401f40
add esp, 0xc
mov edx, dword [esi + 0x40]
jmp case.0x40dfa1.4
push 3
lea eax, [esi + 0xc]
push eax
push ebx
call fcn.00401f40
add esp, 0xc
mov edx, dword [esi + 0x40]
jmp dword [0x445868]
push edx
push dword [esi + 0xc0]
call fcn.00402070
add esp, 8
mov ebx, eax
mov word [esi + 0xc], 0x9f08
lea eax, [esi + 0xe]
mov byte [eax + 4], 0
mov dword [eax], 0
mov dword [esi + 0x24], 0
mov eax, dword [esi + 0x24]
cmp eax, 6
ja 0x40e160
nop
nop
nop
nop
nop
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x24]
movzx edx, byte [esi + ecx + 0xc]
lea ecx, [eax + edx]
add ecx, 0x3959a925
add eax, 0x3959a925
and eax, edx
mov edx, ecx
not edx
and edx, eax
add edx, eax
not eax
and eax, ecx
sub eax, edx
mov dword [esi + 4], eax
mov eax, dword [esi + 4]
mov ecx, eax
not ecx
and ecx, 0xb9
and eax, 0x46
sub eax, ecx
mov ecx, dword [esi + 0x24]
mov byte [esi + ecx + 0xc], al
inc dword [esi + 0x24]
mov eax, dword [esi + 0x24]
cmp eax, 7
jb 0x40e1b0
jmp 0x40e160
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x445870]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret