Function at 0x40be30
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x40
mov eax, dword [0x447834]
xor eax, esp
mov dword [esp + 0x3c], eax
mov dword [esp + 4], ecx
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0xc]
add eax, 0x10
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
mov dword [esp + 0x14], eax
mov eax, 0x7fffffff
sub eax, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov eax, 0xb1e830e3
nop word cs:[eax + eax]
nop dword [eax + eax]
cmp eax, 0x1cb8b09e
jle 0x40c340
cmp eax, 0x1cb8b09f
je 0x40c3e8
cmp eax, 0x482abbb8
je 0x40c193
cmp eax, 0x6b414c03
jne 0x40be80
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0xc]
add ebx, dword [esp + 0x54]
mov dword [esp], eax
mov eax, dword [eax + 0x14]
mov edx, ebx
mov dword [esp + 0x1c], eax
mov eax, ebx
mov esi, ebx
mov ebp, ebx
not edx
and eax, 0x499064c
xor esi, 0x549916dd
and ebp, 0x7bbc7967
mov ecx, edx
and esi, ebx
and ecx, 0x50001091
or eax, ecx
mov ecx, eax
xor eax, 0xfb66f9b3
xor ecx, 0x890440
mov edi, eax
and edi, 0x3414021c
and ecx, 0x408914c1
or ecx, edi
mov edi, esi
and esi, 0xcbebfde3
not edi
or eax, edi
and edi, 0x3414021c
or esi, edi
not eax
xor esi, ecx
or eax, esi
mov ecx, eax
and eax, 0x809452c2
not ecx
and ecx, 0x7f6bad3d
or eax, ecx
mov ecx, eax
xor eax, 0x2bf2bbe0
xor ecx, 0xd40d441f
mov esi, eax
mov edi, ecx
and esi, 0xa05bbb94
and edi, 0x5fa4446b
or edi, esi
xor edi, 0xb4f64294
mov esi, edi
xor esi, eax
and eax, 0xfffffff0
and esi, edi
mov edi, edx
and edi, 0x84438698
or ebp, edi
mov edi, esi
and esi, 0x5ceffe01
xor ebp, 0x6f118067
not edi
xor edx, ebp
and edx, ebp
mov ebp, edi
and edi, 0xa31001fe
or esi, edi
mov edi, edx
and edx, 0x5ceffe01
not edi
or ebp, edi
and edi, 0xa31001fe
or edx, edi
not ebp
xor edx, esi
mov esi, ebp
and esi, edx
xor edx, ebp
or edx, esi
mov esi, edx
or edx, 0x70ed56da
mov edi, edx
not esi
and edx, 0x7bd7c589
not edi
or esi, 0x8f12a925
and edi, 0x84002824
or edi, edx
mov edx, esi
and esi, 0x7bd7c589
not edx
and edx, 0x281252
or edx, esi
xor edx, edi
mov esi, edx
and edx, 0x5e233a34
not esi
and esi, 0xa1dcc5cb
or edx, esi
mov esi, ecx
and ecx, 0xf
and esi, 0xfffffff0
or ecx, eax
mov edi, edx
xor edx, 0x30408120
mov eax, esi
xor edi, 0xc59c6a1e
and edx, 0x75dca922
and eax, ecx
xor ecx, esi
mov ebp, edi
or ecx, eax
mov eax, ecx
and ecx, 0xd1b92715
not eax
and eax, 0x2e46d8ea
or ecx, eax
mov eax, ecx
and ecx, 0xddc128f
not eax
and eax, 0xf223ed70
or ecx, eax
mov eax, ecx
xor ecx, 0xc013510
xor eax, 0x318c225
and ecx, 0x2c833d50
and eax, 0xd37cc2af
or ecx, eax
mov eax, dword [esp + 4]
mov esi, ecx
xor ecx, 0xc022d00
xor esi, 0x5128022a
and ecx, 0x8e56ed85
and esi, 0x71a9127a
or esi, ecx
mov eax, dword [eax + 0x14]
mov ecx, esi
xor esi, 0x8e56ed85
xor ebp, esi
xor ecx, 0x211258
and esi, 0x75dca922
and ebp, edi
and edi, 0x8a2356dd
and ecx, 0x8a2356dd
or edi, edx
lea edx, [esp + 0x2c]
or ecx, esi
mov esi, 0xb7745f77
mov dword [esp + 0x30], edx
xor ecx, edi
mov edx, dword [esp + 0x30]
mov edx, ebp
and edx, ecx
xor ecx, ebp
or ecx, edx
mov edx, eax
mov dword [esp + 0x34], ecx
shr edx, 1
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x2c], ecx
cmp esi, 0xdc1be86c
jg 0x40c150
jmp 0x40c0e8
mov esi, 0xbf0ef74d
mov edi, 0x7fffffff
nop dword [eax]
cmp esi, 0xdc1be86c
jg 0x40c150
cmp esi, 0x95c54b0d
je 0x40c121
cmp esi, 0xb7745f77
je 0x40c105
cmp esi, 0xbf0ef74d
jne 0x40c0e0
jmp 0x40c2d8
cmp dword [esp + 0x34], 0
mov esi, 0x95c54b0d
mov ebp, 0xdc1be86d
cmovs esi, ebp
cmp esi, 0xdc1be86c
jle 0x40c0e8
jmp 0x40c150
mov dword [esp + 0x38], edx
mov esi, 0x7fffffff
mov ebp, 0x18dd9667
sub esi, dword [esp + 0x38]
cmp esi, eax
mov esi, 0xb743c06
cmovb esi, ebp
cmp esi, 0xdc1be86c
jle 0x40c0e8
nop word cs:[eax + eax]
nop
cmp esi, 0xdc1be86d
je 0x40c0d3
cmp esi, 0xb743c06
je 0x40c175
cmp esi, 0x18dd9667
jne 0x40c0e0
jmp 0x40c0d3
mov edi, dword [esp + 0x38]
mov esi, 0xbf0ef74d
add edi, eax
cmp ecx, edi
cmovae edi, ecx
cmp esi, 0xdc1be86c
jle 0x40c0e8
jmp 0x40c150
mov eax, dword [esp + 0xc]
mov dword [esp], eax
mov edi, dword [eax]
mov esi, dword [esp + 0x14]
mov ebp, dword [esp + 0x28]
push esi
push edi
push ebp
call fcn.0041ced0
add esp, 0xc
mov ecx, dword [esp + 0x60]
lea eax, [ebp + esi]
mov ebx, ecx
push ecx
push dword [esp + 0x60]
push eax
call fcn.0041ced0
add esp, 0xc
add esi, ebx
mov byte [ebp + esi], 0
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov ecx, 0xc6da1ab6
inc eax
mov dword [esp + 0x34], eax
cmp ecx, 0x900172a3
je 0x40c21b
cmp ecx, 0xb4fb5a6a
je 0x40c3b0
cmp ecx, 0xc6da1ab6
jne 0x40c1e0
mov ecx, dword [esp + 0x34]
mov edx, 0x900172a3
cmp ecx, 0xfff
mov ecx, 0xb4fb5a6a
cmova ecx, edx
cmp ecx, 0x900172a3
jne 0x40c1e8
mov ecx, dword [edi - 4]
add eax, 0x23
mov dword [esp + 0x38], ecx
mov ecx, 0xac1f43e6
sub edi, dword [esp + 0x38]
cmp edi, 3
seta byte [esp + 0x2c]
cmp edi, 0x24
setb byte [esp + 0x30]
cmp ecx, 0xac1f43e6
jne 0x40c2a9
movzx ecx, byte [esp + 0x2c]
movzx edx, byte [esp + 0x30]
mov esi, 0x73576479
mov ch, cl
xor ch, 1
and cl, ch
mov dh, ch
and dh, cl
xor cl, ch
or cl, dh
mov dh, dl
xor dh, 1
mov ch, cl
and dl, dh
mov bl, dh
xor ch, 1
and bl, dl
xor dl, dh
or dl, bl
mov dh, dl
and dl, ch
xor dh, 1
or ch, dh
and dh, cl
or dh, dl
mov cl, ch
xor cl, dh
not dh
or dh, ch
not cl
not dh
or dh, cl
mov ecx, 0xd8f649f6
test dh, 1
cmovne ecx, esi
cmovne ecx, esi
cmp ecx, 0xac1f43e6
je 0x40c246
cmp ecx, 0xd8f649f6
je 0x40c2be
cmp ecx, 0x73576479
jne 0x40c23e
jmp 0x40c405
mov edi, dword [esp + 0x38]
mov ecx, 0xb4fb5a6a
cmp ecx, 0x900172a3
jne 0x40c1e8
jmp 0x40c21b
mov eax, dword [esp + 0x30]
mov eax, dword [esp + 4]
mov dword [esp + 0x20], eax
lea eax, [esp + 8]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
lea eax, [edi + 1]
push eax
call fcn.00408310
add esp, 4
mov dword [esp + 8], eax
mov ecx, 0x482abbb8
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
mov dword [eax], ebx
mov eax, dword [esp]
mov dword [eax + 0x14], edi
mov eax, dword [esp + 8]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x1c]
cmp eax, 0xf
mov eax, 0xe13b3db7
cmova eax, ecx
cmp eax, 0x1cb8b09e
jg 0x40be8b
nop dword [eax + eax]
cmp eax, 0xb1e830e3
je 0x40c38e
cmp eax, 0xe13b3db7
jne 0x40c3d8
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x28]
push edi
push esi
push ebx
call fcn.0041ced0
add esp, 0xc
mov ecx, dword [esp + 0x60]
lea eax, [ebx + edi]
mov ebp, ecx
push ecx
push dword [esp + 0x60]
push eax
call fcn.0041ced0
add esp, 0xc
add edi, ebp
mov byte [ebx + edi], 0
mov eax, dword [esp + 8]
mov dword [esi], eax
jmp 0x40c3c3
mov eax, dword [esp + 0x18]
mov ecx, 0xd1ffc5b7
cmp eax, dword [esp + 0x54]
mov eax, 0x6b414c03
cmovb eax, ecx
cmp eax, 0x1cb8b09e
jg 0x40be8b
jmp 0x40c340
push eax
push edi
call fcn.0041788e
add esp, 8
mov eax, dword [esp + 8]
mov ecx, dword [esp]
mov dword [ecx], eax
mov eax, 0x1cb8b09f
cmp eax, 0x1cb8b09e
jg 0x40be8b
jmp 0x40c340
cmp eax, 0xd1ffc5b7
jne 0x40be80
call fcn.00408300
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x3c]
xor ecx, esp
call fcn.004178c4
mov eax, dword [esp + 4]
add esp, 0x40
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
call fcn.00423509
int3