Function at 0x40ec30
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x84
mov dword [esp + 4], 0x2daeee9
mov dword [esp + 8], 0xe6d8d4d0
lea ebx, [esp + 0xc]
mov byte [esp + 0xc], 0x40
mov dword [esp + 0xd], 0
mov word [esp + 0x11], 0
xor eax, eax
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, eax
and edi, 4
mov ecx, esi
xor ecx, 0xf2
add ecx, edi
xor cl, byte [esp + esi + 4]
add cl, 0x46
mov byte [esp + esi + 4], cl
inc esi
add eax, 2
cmp esi, 0xf
jne 0x40ec70
lea eax, [esp + 0x7b]
lea esi, [esp + 4]
mov ebp, esi
mov edi, eax
mov ecx, 2
xchg esi, ebp
rep movsd dword es:[edi], dword [esi]
xchg esi, ebp
lea edi, [esp + 0x83]
xor ecx, ecx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
movzx ecx, byte [esp + 0xc]
mov byte [esp + 0x83], cl
mov dword [esp + 4], 0x81378749
mov dword [esp + 8], 0x8d3e8336
mov dword [esp + 0xc], 0x89388f23
mov dword [esp + 0x10], 0x957d8b34
mov dword [esp + 0x14], 0x912d9748
mov dword [esp + 0x18], 0x9d3d9320
mov dword [esp + 0x1c], 0x997e9f66
mov dword [esp + 0x20], 0x652a9b3b
mov dword [esp + 0x24], 0x61d267d4
mov dword [esp + 0x28], 0x6dcf63cb
mov dword [esp + 0x2c], 0x69d26fcf
mov dword [esp + 0x30], 0x75db6bc3
mov dword [esp + 0x34], 0x718777c2
mov dword [esp + 0x38], 0x7d8573c8
mov dword [esp + 0x3c], 0x79c77fc5
mov dword [esp + 0x40], 0x458d7bc1
mov dword [esp + 0x44], 0x41f747ea
mov dword [esp + 0x48], 0x4df543f2
mov dword [esp + 0x4c], 0x49f14fbb
mov dword [esp + 0x50], 0x55fe4bfa
mov dword [esp + 0x54], 0x51e057fb
mov dword [esp + 0x58], 0x5de353fd
mov dword [esp + 0x5c], 0x59f15ff0
mov dword [esp + 0x60], 0x254d5bf4
mov dword [esp + 0x64], 0x2126272e
mov ecx, 0xc6b00f61
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x394ff0a3]
mov ebx, edx
and ebx, ecx
add bl, bl
sub dl, bl
movzx edx, dl
add edx, ecx
add dl, 0x1b
mov byte [esp + ecx + 0x394ff0a3], dl
inc ecx
cmp ecx, 0xc6b00fc5
jne 0x40eda0
mov dword [esp + 0x68], 0x77d7095b
mov dword [esp + 0x6c], 0x73db75e4
mov word [esp + 0x70], 0x7170
mov dword [esp + 0x72], 0
xor ecx, ecx
xor edi, edi
nop
nop
nop
nop
nop
mov edx, ecx
and edx, 0x1c
mov ebx, edi
xor ebx, 0x3e
add ebx, edx
xor bl, byte [esp + edi + 0x68]
add bl, 0xca
mov byte [esp + edi + 0x68], bl
inc edi
add ecx, 2
cmp edi, 0xe
jne 0x40edf0
mov ecx, esp
lea edx, [esp + 0x68]
push 0
push ecx
push 8
push eax
push esi
push edx
push dword [esp + 0xb0]
call fcn.0040f940
add esp, 0x1c
test al, al
je 0x40ef14
mov word [esp + 4], 0xaaaf
mov byte [esp + 6], 0xc2
mov dword [esp + 7], 0
mov eax, 0x596a23d0
nop
nop
movzx ecx, byte [esp + eax - 0x596a23cc]
xor ecx, eax
add ecx, 0x3240abbf
mov edx, ecx
and edx, 0x6f
xor ecx, 0xef
lea ecx, [ecx + edx*2]
add cl, 0x42
mov byte [esp + eax - 0x596a23cc], cl
inc eax
cmp eax, 0x596a23d7
jne 0x40ee50
xor ecx, ecx
mov eax, dword [esp]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [eax + ecx]
mov dh, byte [esp + ecx + 4]
test dl, dl
je 0x40eea1
inc ecx
cmp dl, dh
je 0x40ee90
mov bl, 1
cmp dl, dh
je 0x40f0bc
mov dword [esp + 4], 0xfbe9ecff
mov dword [esp + 8], 0x3f0fef5
xor ecx, ecx
nop
nop
nop
mov edx, ecx
add dl, 0xc2
xor dl, byte [esp + ecx + 4]
add dl, 0x36
mov byte [esp + ecx + 4], dl
inc ecx
cmp ecx, 8
jne 0x40eec0
movzx ebx, byte [esp + 4]
mov ecx, eax
test bl, bl
je 0x40ef1b
mov edx, esi
mov edi, eax
mov ecx, eax
jmp 0x40eef7
movzx ebx, byte [edx]
test bl, bl
je 0x40ef1b
mov bh, byte [edi]
test bh, bh
je 0x40f0ba
inc edi
inc edx
lea ebp, [ecx + 1]
cmp bh, bl
je 0x40ef0e
mov ecx, ebp
mov edi, ebp
je 0x40eef0
mov edx, esi
jmp 0x40eef0
xor ebx, ebx
jmp 0x40f0c5
xor edx, edx
test ecx, ecx
je 0x40f0ba
mov dword [esp + 4], 0x92a994ae
mov dword [esp + 8], 0xb989497b
mov dword [esp + 0xc], 0x414cb6b5
mov dword [esp + 0x10], 0xb6ba80ba
mov dword [esp + 0x14], 0x29446887
mov dword [esp + 0x18], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, edx
add cl, 0x8b
xor cl, byte [esp + edx + 4]
add cl, 0x49
mov byte [esp + edx + 4], cl
inc edx
cmp edx, 0x18
jne 0x40ef60
movzx ecx, byte [esp + 4]
mov esi, eax
test cl, cl
je 0x40efb4
lea ebp, [esp + 4]
mov edx, ebp
mov edi, eax
mov esi, eax
jmp 0x40ef97
movzx ecx, byte [edx]
test cl, cl
je 0x40efb4
mov ch, byte [edi]
test ch, ch
je 0x40f0ba
inc edi
inc edx
lea ebx, [esi + 1]
cmp ch, cl
je 0x40efae
mov esi, ebx
mov edi, ebx
je 0x40ef90
mov edx, ebp
jmp 0x40ef90
test esi, esi
je 0x40f0ba
mov word [esp + 4], 0x8b6e
mov byte [esp + 6], 0x4e
mov word [esp + 7], 0
mov ecx, 0xfbd88412
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x4277bf2]
mov ebx, edx
and ebx, ecx
add bl, bl
sub dl, bl
movzx edx, dl
add edx, ecx
add dl, 0xa6
mov byte [esp + ecx + 0x4277bf2], dl
inc ecx
cmp ecx, 0xfbd88417
jne 0x40efe0
movzx ecx, byte [esp + 4]
test cl, cl
je 0x40f049
add esi, 0x13
lea edx, [esp + 4]
mov ebp, esi
mov edi, esi
jmp 0x40f027
movzx ecx, byte [edx]
test cl, cl
je 0x40f061
mov ch, byte [ebp]
test ch, ch
je 0x40f0ba
inc ebp
inc edx
lea ebx, [edi + 1]
cmp ch, cl
je 0x40f03f
mov edi, ebx
mov ebp, ebx
mov bl, 1
je 0x40f020
lea edx, [esp + 4]
jmp 0x40f020
mov byte [0x44fa58], 1
mov eax, 0x44fa5a
mov bl, 1
mov word [eax], 0
mov eax, dword [esp]
jmp 0x40f0bc
test edi, edi
je 0x40f0ba
mov byte [0x44fa58], 1
mov dword [esp + 4], 0
mov eax, 0x44fa5a
cmp esi, edi
jae 0x40f057
xor ebx, ebx
lea ebp, [esp + 4]
cmp byte [esi], 0
je 0x40f0d2
push ebp
push edi
push esi
call fcn.00410cd0
add esp, 0xc
movzx edx, word [esp + 4]
lea ecx, [ebx + 2]
mov word [ebx + 0x44fa5a], dx
cmp ebx, 0x1fb
ja 0x40f0b2
add esi, eax
mov ebx, ecx
cmp esi, edi
jb 0x40f083
lea eax, [ecx + 0x44fa5a]
jmp 0x40f055
xor ebx, ebx
push eax
call fcn.0043efa0
add esp, 4
mov eax, ebx
add esp, 0x84
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [ebx + 0x44fa5a]
jmp 0x40f055