Function at 0x40daeb
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x45891a
mov eax, dword fs:[0]
push eax
mov eax, 0xa5bc
call fcn.00441080
mov eax, dword [0x473a30]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, 0x479b9c
xor ebx, ebx
mov eax, esi
mov dword [ebp - 0xa598], ebx
xor edx, edx
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40db31
sub eax, edi
je 0x40db66
mov al, byte [edx + 0x479b9c]
cmp al, 0x2d
je 0x40db53
cmp al, 0x30
je 0x40db53
movsx eax, al
add dword [ebp - 0xa598], eax
mov eax, esi
inc edx
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40db59
sub eax, edi
cmp edx, eax
jb 0x40db3c
push 0x400
lea eax, [ebp - 0x500]
push ebx
mov esi, 0x5000
push eax
mov dword [ebp - 0xa594], esi
call fcn.0043ee90
add esp, 0xc
push esi
lea eax, [ebp - 0xa500]
push ebx
push eax
call fcn.0043ee90
add esp, 0xc
test byte [0x479c34], 9
mov al, 0x33
je 0x40dba4
add al, 0xfe
push dword [ebp - 0xa598]
movsx eax, al
push eax
push 0x474e40
lea eax, [ebp - 0x500]
push 0x466758
push eax
call fcn.0043ca22
add esp, 0x14
push 7
pop ecx
mov byte [ebp - 0x5a], cl
mov byte [ebp - 0x59], cl
xor eax, eax
mov byte [ebp - 0x60], 0x77
mov byte [ebp - 0x5f], 0x1e
mov byte [ebp - 0x5e], 0x71
mov byte [ebp - 0x5d], 0xf
mov byte [ebp - 0x5c], 0x23
mov byte [ebp - 0x5b], 0x68
mov byte [ebp - 0x58], 1
mov byte [ebp - 0x57], 0x30
mov byte [ebp - 0x56], 0xc7
lea edi, [ebp - 0x55]
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
push 8
pop ecx
xor eax, eax
mov byte [ebp - 0x38], 0x77
mov byte [ebp - 0x37], 0x1e
mov byte [ebp - 0x36], 0x71
mov byte [ebp - 0x35], 0xf
mov byte [ebp - 0x34], 0xc7
lea edi, [ebp - 0x33]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
push 2
stosb byte es:[edi], al
mov dword [ebp - 0xa5a0], ebx
lea eax, [ebp - 0x60]
pop edx
xor byte [eax], 0xc7
mov ecx, eax
je 0x40dc36
inc ecx
xor byte [ecx], 0xc7
jne 0x40dc30
add eax, 0x28
dec edx
jne 0x40dc29
xor eax, eax
lea edi, [ebp - 0x6c]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
lea eax, [ebp - 0xa500]
push eax
lea eax, [ebp - 0x500]
push eax
lea edi, [ebp - 0xa594]
mov dword [ebp - 0xa59c], ebx
call fcn.0040bf10
pop ecx
pop ecx
test eax, eax
jne 0x40dfa6
mov eax, dword [ebp - 0xa594]
lea edi, [eax - 7]
shr edi, 1
xor esi, esi
cmp edi, ebx
jle 0x40dca4
lea ecx, [ebp + eax - 0xa503]
mov dl, byte [ecx]
lea eax, [ebp + esi - 0xa4fb]
xor byte [eax], dl
mov dl, byte [eax]
xor byte [ecx], dl
mov dl, byte [ecx]
xor byte [eax], dl
inc esi
dec ecx
cmp esi, edi
jl 0x40dc85
mov eax, dword [ebp - 0xa594]
lea ecx, [eax - 5]
lea eax, [ebp - 0x5500]
lea edx, [ebp - 0xa4fb]
call fcn.0040bcf7
lea ecx, [ebp - 0xa590]
mov esi, eax
call fcn.00417620
push ebx
lea ecx, [ebp - 0xa5b8]
mov dword [ebp - 4], ebx
call fcn.0041c240
push ebx
lea ecx, [ebp - 0xa5c8]
mov byte [ebp - 4], 1
call fcn.0041c240
push 1
lea eax, [ebp - 0xa5b8]
push eax
lea eax, [ebp + esi - 0x5500]
push eax
lea eax, [ebp - 0x5500]
push eax
lea ecx, [ebp - 0xa590]
mov byte [ebp - 4], 2
call fcn.004176b0
test al, al
jne 0x40dd42
push 2
pop esi
lea ecx, [ebp - 0xa5c8]
mov byte [ebp - 4], 1
call fcn.0041c780
lea ecx, [ebp - 0xa5b8]
mov byte [ebp - 4], 0
call fcn.0041c780
lea eax, [ebp - 0xa590]
call fcn.0040c369
mov eax, esi
jmp 0x40e1b7
lea ecx, [ebp - 0xa5b8]
call fcn.0041cdf0
test al, al
jne 0x40dd55
push 3
jmp 0x40dd11
lea ecx, [ebp - 0xa5b8]
call fcn.0041c9a0
mov edi, eax
mov dword [ebp - 0xa59c], edi
cmp edi, ebx
jne 0x40dd70
push 5
jmp 0x40dd11
xor ecx, ecx
push 0xc
pop edx
mov eax, edi
mul edx
seto cl
neg ecx
or ecx, eax
xor eax, eax
add ecx, 4
setb al
neg eax
or eax, ecx
push eax
call fcn.0041fc7e
pop ecx
cmp eax, ebx
je 0x40ddb7
push 0x40e1ef
push 0x40e1d1
push edi
lea esi, [eax + 4]
push 0xc
push esi
mov dword [eax], edi
call fcn.0043de0a
mov dword [ebp - 0xa5a0], esi
jmp 0x40ddbd
mov dword [ebp - 0xa5a0], ebx
cmp edi, ebx
mov dword [ebp - 0xa594], ebx
jle 0x40df79
mov edi, dword [ebp - 0xa5a0]
add edi, 4
push 0x466490
push dword [ebp - 0xa594]
lea ecx, [ebp - 0xa5b8]
lea ebx, [edi - 4]
call fcn.0041ca50
mov ecx, eax
call fcn.0041cc20
mov ecx, eax
call fcn.0041c990
push eax
mov ecx, ebx
call fcn.0040f36a
push 0x466498
push dword [ebp - 0xa594]
lea ecx, [ebp - 0xa5b8]
call fcn.0041ca50
mov ecx, eax
call fcn.0041cc20
mov ecx, eax
call fcn.0041c990
push eax
push edi
call fcn.0040eb5d
push 0x466488
push dword [ebp - 0xa594]
lea ecx, [ebp - 0xa5b8]
call fcn.0041ca50
mov ecx, eax
call fcn.0041cc20
mov ecx, eax
call fcn.0041c990
push eax
lea eax, [edi + 4]
push eax
call fcn.0040eb5d
call fcn.0040e8bd
call fcn.0040ebd6
push 0x46227c
mov ecx, ebx
call fcn.0040b896
test eax, eax
jne 0x40de82
push 0x466778
mov ecx, ebx
call fcn.0040f2d7
mov esi, dword [0x459300]
xor eax, eax
push eax
push eax
push 0xffffffffffffffff
lea ecx, [ebp - 0x38]
push ecx
push eax
push eax
call esi
cmp eax, 0x28
ja 0x40deaf
push eax
lea eax, [ebp - 0x100]
push eax
push 0xffffffffffffffff
lea eax, [ebp - 0x38]
push eax
push 0
push 0
call esi
lea eax, [ebp - 0x100]
push eax
mov ecx, ebx
call fcn.0040b896
test eax, eax
jne 0x40df5c
mov eax, dword [edi]
push 0x2e
push eax
call fcn.0043e550
pop ecx
pop ecx
test eax, eax
jne 0x40deda
or esi, 0xffffffff
jmp 0x40dede
sub eax, dword [edi]
mov esi, eax
call fcn.00420fff
push eax
lea ecx, [ebp - 0xa598]
call fcn.0040158a
add esi, 0xfffffff6
push esi
lea eax, [ebp - 0xa5a4]
push eax
mov esi, edi
mov byte [ebp - 4], 3
call fcn.0040ec80
push eax
lea ecx, [ebp - 0xa598]
mov byte [ebp - 4], 4
call fcn.0040edf3
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0xa5a4]
add ecx, 0xfffffff0
call fcn.004015e2
lea esi, [ebp - 0xa598]
call fcn.0040b863
lea ecx, [ebp - 0x6c]
mov dl, byte [eax]
inc eax
mov byte [ecx], dl
inc ecx
test dl, dl
jne 0x40df35
lea esi, [ebp - 0xa598]
call fcn.0040b87b
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0xa598]
add ecx, 0xfffffff0
call fcn.004015e2
inc dword [ebp - 0xa594]
mov eax, dword [ebp - 0xa594]
add edi, 0xc
cmp eax, dword [ebp - 0xa59c]
jl 0x40ddd4
xor ebx, ebx
lea ecx, [ebp - 0xa5c8]
mov byte [ebp - 4], 1
call fcn.0041c780
lea ecx, [ebp - 0xa5b8]
mov byte [ebp - 4], 0
call fcn.0041c780
or dword [ebp - 4], 0xffffffff
lea eax, [ebp - 0xa590]
call fcn.0040c369
push ebx
push 6
push 4
push ebx
push ebx
push 0xc0000000
push 0x466780
call dword [0x459350]
push 0x40
mov dword [ebp - 0xa598], eax
lea eax, [ebp - 0xb0]
push ebx
push eax
mov dword [ebp - 0xa5a8], ebx
call fcn.0043ee90
add esp, 0xc
cmp dword [ebp - 0xa598], ebx
je 0x40e004
push ebx
lea eax, [ebp - 0xa5a8]
push eax
push 0x40
lea eax, [ebp - 0xb0]
push eax
push dword [ebp - 0xa598]
call dword [0x459334]
mov byte [ebp - 0x71], 0
mov eax, dword [ebp - 0xa59c]
cmp eax, ebx
jle 0x40e143
mov ebx, dword [ebp - 0xa5a0]
mov dword [ebp - 0xa59c], 0x31
add ebx, 8
mov dword [ebp - 0xa594], eax
mov eax, dword [ebp - 0xa59c]
push eax
mov dword [ebp - 0xa5a4], eax
lea eax, [ebp - 0xb0]
push eax
call fcn.0043ce10
pop ecx
pop ecx
test eax, eax
jne 0x40e12c
lea esi, [ebx - 8]
mov ecx, esi
call fcn.0040ea98
mov edi, eax
call fcn.0040e213
test eax, eax
jne 0x40e100
lea eax, [ebp - 0x60]
push eax
push esi
xor edi, edi
call fcn.0040ea32
pop ecx
pop ecx
test al, al
je 0x40e07a
inc edi
push 0
lea eax, [ebp - 0xa5a8]
push eax
push 1
lea eax, [ebp - 0xa5a4]
push eax
push dword [ebp - 0xa598]
call dword [0x45934c]
mov esi, ebx
call fcn.0040b863
mov edx, eax
mov ecx, 0x4667a0
call fcn.0040d9f5
test edi, edi
je 0x40e0b7
push 1
lea eax, [ebp - 0x6c]
push eax
jmp 0x40e0bb
push 0
push 0
call fcn.0040b863
lea esi, [ebx - 4]
mov edi, eax
call fcn.0040b863
mov edx, edi
mov ecx, eax
call fcn.0040e341
lea ecx, [ebx - 8]
call fcn.0040ea98
mov edi, eax
call fcn.0040e213
mov esi, ebx
test eax, eax
je 0x40e0f4
call fcn.0040b863
mov ecx, 0x4667a4
jmp 0x40e10c
call fcn.0040b863
mov ecx, 0x4667ac
jmp 0x40e10c
mov esi, ebx
call fcn.0040b863
mov ecx, 0x4667b4
mov edx, eax
call fcn.0040d9f5
push 0xffffffffffffffff
lea ecx, [ebx - 8]
call fcn.0040f315
mov esi, ebx
call fcn.0040b87b
lea esi, [ebx - 4]
call fcn.0040b87b
inc dword [ebp - 0xa59c]
add ebx, 0xc
dec dword [ebp - 0xa594]
jne 0x40e02b
xor ebx, ebx
mov esi, dword [ebp - 0xa5a0]
cmp esi, ebx
je 0x40e16b
push 0x40e1ef
add esi, 0xfffffffc
push dword [esi]
push 0xc
push dword [ebp - 0xa5a0]
call fcn.0043dda7
push esi
call fcn.0041fc73
pop ecx
push dword [ebp - 0xa598]
mov edi, dword [0x459348]
call edi
push ebx
push 6
push 4
push ebx
push ebx
push 0xc0000000
push 0x4667b8
call dword [0x459350]
mov esi, eax
cmp esi, ebx
je 0x40e1b5
push ebx
lea eax, [ebp - 0xa59c]
push eax
push 1
push 0x4667c8
push esi
mov dword [ebp - 0xa59c], ebx
call dword [0x45934c]
push esi
call edi
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0043c573
leave
ret