Function at 0x41de90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x150
mov ecx, dword [ebp + 8]
xor eax, eax
cmp byte [ebp + 0x18], 0
setne al
lea eax, [eax*8 + 0x120]
lea edx, [esp + 0x24]
push 0
push 0
push eax
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
call fcn.00439880
xor ebx, ebx
test eax, eax
js 0x41e3dc
mov dword [esp], 0x5a23681a
mov byte [esp + 4], 0xb4
mov dword [esp + 5], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + ebx]
lea edx, [ebx + 0xde]
mov eax, 0x21
sub eax, ebx
xor eax, edx
and eax, ecx
xor eax, edx
add al, 0xaa
mov byte [esp + ebx], al
mov eax, ebx
and eax, 1
or ebx, 0xbfb96691
add ebx, eax
mov eax, ebx
not eax
and eax, 0x10
and ebx, 0x2f
sub ebx, eax
cmp ebx, 9
jb 0x41def0
cmp byte [esp + 0x43], 0
js 0x41df48
lea eax, [esp + 0x2c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
mov bl, 1
jmp 0x41df99
mov esi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov eax, esi
or eax, ebx
je 0x41df97
mov edi, dword [esp + 0x34]
inc edi
push edi
call fcn.0040c860
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push ebx
push esi
call fcn.00439880
test eax, eax
setns bl
js 0x41df8c
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
push edi
call fcn.0040c870
add esp, 4
jmp 0x41df99
xor ebx, ebx
movzx eax, byte [ebp + 0x18]
mov dword [esp + 0x14], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp], 0x4e46504e
mov dword [esp + 4], 0xfd51
mov byte [esp + 8], 0
mov ecx, 0x2e145154
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x2e145154]
xor edx, ecx
mov esi, edx
and esi, 0x5b
xor edx, 0x5b
lea edx, [edx + esi*2]
inc dl
mov byte [esp + ecx - 0x2e145154], dl
inc ecx
cmp ecx, 0x2e14515d
jne 0x41dfd0
lea ecx, [esp + eax]
add ecx, 0x24
cmp byte [esp + eax + 0x3b], 0
js 0x41e017
mov eax, esp
push ecx
push eax
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
mov al, 1
jmp 0x41e074
mov dword [esp + 0x10], ebx
mov esi, dword [ecx]
mov ebx, dword [ecx + 4]
mov eax, esi
or eax, ebx
je 0x41e06e
mov edi, dword [ecx + 8]
inc edi
push edi
call fcn.0040c860
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push ebx
push esi
call fcn.00439880
test eax, eax
setns al
mov esi, eax
js 0x41e05d
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
push edi
call fcn.0040c870
add esp, 4
mov ebx, dword [esp + 0x10]
mov eax, esi
jmp 0x41e074
xor eax, eax
mov ebx, dword [esp + 0x10]
and bl, al
mov dword [esp + 0x10], ebx
mov dword [esp], 0x97919e98
mov dword [esp + 4], 0xae839e8b
mov byte [esp + 8], 0x38
mov dword [esp + 9], 0
mov byte [esp + 0xd], 0
xor eax, eax
xor ecx, ecx
nop
movzx edx, byte [esp + ecx]
mov esi, eax
and esi, 0xa
mov edi, ecx
xor edi, 0xb6af4e45
add edi, esi
add edi, 0x8ef5583
xor edi, edx
mov edx, edi
mov esi, 0xbe1932e8
sub esi, edi
add edi, 0x17
mov ebx, esi
and esi, 0x73
and edi, 0x8c
or edi, esi
not ebx
and ebx, 1
or ebx, edi
not edx
and edx, 1
xor ebx, 0x72
add ebx, edx
mov byte [esp + ecx], bl
inc ecx
add eax, 2
cmp ecx, 0xe
jne 0x41e0a0
cmp byte [esp + 0x5b], 0
js 0x41e113
lea eax, [esp + 0x44]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
mov al, 1
mov ebx, dword [esp + 0x10]
jmp 0x41e16c
mov esi, dword [esp + 0x44]
mov ebx, dword [esp + 0x48]
mov eax, esi
or eax, ebx
je 0x41e26a
mov edi, dword [esp + 0x4c]
inc edi
push edi
call fcn.0040c860
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push ebx
push esi
call fcn.00439880
test eax, eax
setns al
mov esi, eax
js 0x41e15d
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
push edi
call fcn.0040c870
add esp, 4
mov ebx, dword [esp + 0x10]
mov eax, esi
and bl, al
mov dword [esp], 0xe9dae4d4
mov byte [esp + 4], 0x40
mov word [esp + 5], 0
mov byte [esp + 7], 0
mov eax, 0x13c8c71
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x13c8c71]
mov esi, eax
and esi, 0x100085f
xor edx, 0xae3ee5a0
or esi, 0x8026180
mov ecx, edx
and ecx, esi
add ecx, ecx
sub esi, ecx
lea ecx, [esi + edx]
add esi, edx
add esi, 0xca
mov edi, 0x442ebe35
sub edi, ecx
and ecx, 1
mov edx, edi
not edx
and edi, 0x7b
and esi, 0x84
or esi, edi
and edx, 1
or edx, esi
xor edx, 0x7a
add edx, ecx
mov byte [esp + eax - 0x13c8c71], dl
inc eax
cmp eax, 0x13c8c79
jne 0x41e190
cmp byte [esp + 0x73], 0
js 0x41e20f
lea eax, [esp + 0x5c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
mov al, 1
jmp 0x41e277
mov dword [esp + 0x10], ebx
mov esi, dword [esp + 0x5c]
mov ebx, dword [esp + 0x60]
mov eax, esi
or eax, ebx
je 0x41e271
mov edi, dword [esp + 0x64]
inc edi
push edi
call fcn.0040c860
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push ebx
push esi
call fcn.00439880
test eax, eax
setns al
mov esi, eax
js 0x41e259
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
push edi
call fcn.0040c870
add esp, 4
mov ebx, dword [esp + 0x10]
mov eax, esi
jmp 0x41e277
xor eax, eax
jmp 0x41e10d
xor eax, eax
mov ebx, dword [esp + 0x10]
and bl, al
mov dword [esp + 0x10], ebx
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + ecx*8 + 0x124]
mov ecx, dword [esp + ecx*8 + 0x128]
mov dword [esp], 0x2a363f2b
mov dword [esp + 4], 0x2c3f2c32
mov dword [esp + 8], 0x89233333
mov dword [esp + 0xc], 0
mov edx, 0xa1
mov esi, 0x5e
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + edx - 0xa1]
mov ebx, esi
xor ebx, edx
and ebx, edi
xor ebx, edx
add bl, 0xdb
mov byte [esp + edx - 0xa1], bl
inc edx
dec esi
cmp edx, 0xb1
jne 0x41e2c0
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
sub esp, 0x10
lea eax, [esp + 0x10]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00405ef0
add esp, 0x10
mov esi, eax
movzx eax, byte [esp + 0x7c]
mov dword [esp], 0xa8bdaeb1
mov dword [esp + 4], 0x5557bab9
mov dword [esp + 8], 0xe145
xor ecx, ecx
nop
nop
nop
lea edx, [ecx + ecx]
mov edi, edx
and edi, 0x14
mov ebx, ecx
xor ebx, 0xfa
add ebx, edi
xor bl, byte [esp + ecx]
add bl, 0x1e
mov byte [esp + ecx], bl
and edx, 2
mov edi, edx
and edi, ecx
xor edx, ecx
xor edx, 1
lea ecx, [edx + edi*2]
cmp ecx, 0xc
jb 0x41e330
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405f80
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x7d]
mov dword [esp], 0xafaaadb0
mov dword [esp + 4], 0x4f50aebf
mov word [esp + 8], 0xe159
mov dword [esp + 0xa], 0
mov word [esp + 0xe], 0
or edi, esi
xor ecx, ecx
mov ebx, dword [esp + 0x10]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x7a
xor dl, byte [esp + ecx]
add dl, 0x9e
mov byte [esp + ecx], dl
inc ecx
cmp ecx, 0x10
jne 0x41e3b0
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405f80
add esp, 0xc
or edi, eax
sete al
and bl, al
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret