Function at 0x41d520
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x118
mov dword [esp + 0x10], 0x632e6105
mov dword [esp + 0x14], 0x67c565cb
mov dword [esp + 0x18], 0x6bc669c9
mov dword [esp + 0x1c], 0x6ffe6d2d
mov dword [esp + 0x20], 0x531651c0
mov dword [esp + 0x24], 0x57c255f5
mov dword [esp + 0x28], 0x5b3f59f9
lea eax, [esp + 0x2c]
mov word [esp + 0x2c], 0x5d5c
mov dword [esp + 0x2e], 0
mov dword [esp + 0x32], 0
mov word [esp + 0x36], 0
mov dword [esp + 0x94], 0
mov ecx, dword [esp + 0x94]
cmp ecx, 0x27
ja 0x41d601
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x94]
movzx edx, byte [esp + edx + 0x10]
lea esi, [ecx + edx]
add esi, 0x1c2aa450
add ecx, 0x1c2aa450
and ecx, edx
add ecx, ecx
mov edx, ecx
xor edx, esi
not ecx
and ecx, esi
add ecx, ecx
sub ecx, edx
mov dword [esp + 0xc8], ecx
mov ecx, dword [esp + 0xc8]
add cl, 0xd0
mov edx, dword [esp + 0x94]
mov byte [esp + edx + 0x10], cl
inc dword [esp + 0x94]
mov ecx, dword [esp + 0x94]
cmp ecx, 0x28
jb 0x41d5a0
lea esi, [esp + 0x94]
lea edx, [esp + 0x10]
mov ecx, 7
mov edi, esi
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0xb0]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
lea ebx, [esp + 0x6c]
push ebx
push 0
push 0
push 0xe
push esi
push 0
call dword [0x449de0]
mov edi, dword [esp + 0x6c]
test edi, edi
jns 0x41d64d
mov eax, 0xffffffff
jmp 0x41d650
lea eax, [edi + edi]
push eax
call fcn.00408d40
add esp, 4
push ebx
push edi
mov dword [esp + 0x14], eax
push eax
push 0xe
push esi
push 0
call dword [0x449de0]
mov dword [esp + 0x10], 0xfb88f9aa
mov dword [esp + 0x14], 0xff99fd99
mov dword [esp + 0x18], 0xf393f163
mov dword [esp + 0x1c], 0xf793f56b
mov dword [esp + 0x20], 0xebe8e963
lea eax, [esp + 0x24]
mov dword [esp + 0x24], 0
mov dword [esp + 0x70], 0
mov ecx, dword [esp + 0x70]
cmp ecx, 0x17
ja 0x41d716
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x70]
movzx edx, byte [esp + edx + 0x10]
lea edi, [ecx + edx]
add edi, 0xaeb2fadf
add ecx, 0xaeb2fadf
and ecx, edx
add ecx, ecx
sub edi, ecx
mov dword [esp + 0xc8], edi
mov ecx, dword [esp + 0xc8]
mov edx, ecx
or edx, 0xe6
and ecx, 0xe6
add ecx, edx
inc cl
mov edx, dword [esp + 0x70]
mov byte [esp + edx + 0x10], cl
mov ecx, dword [esp + 0x70]
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x70]
cmp ecx, 0x18
jb 0x41d6b0
lea edi, [esp + 0xb4]
lea ebx, [esp + 0x10]
mov edx, ebx
mov ecx, 5
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0xc8]
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov eax, dword [esp + 0x6c]
mov ecx, eax
add ecx, 9
jns 0x41d74e
mov eax, 0xffffffff
jmp 0x41d753
add eax, eax
add eax, 0x12
mov esi, dword [esp + 0xc]
push eax
call fcn.00408d40
add esp, 4
mov edi, eax
movzx ecx, word [esi]
test cx, cx
je 0x41d781
lea edx, [esi + 2]
mov eax, edi
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x41d770
mov word [eax], 0
movzx ecx, word [esp + 0xb4]
test cx, cx
je 0x41d7b1
lea edx, [esp + 0xb6]
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x41d7a0
mov word [eax], 0
lea eax, [esp + 0x90]
push eax
push edi
call fcn.0043b1b0
add esp, 8
not eax
shr eax, 0x1f
mov eax, dword [eax*4 + 0x443b5c]
mov ecx, 0x77061ceb
xor ecx, dword [0x443b64]
add eax, ecx
inc eax
jmp eax
mov dword [esp + 0x14], edx
mov esi, dword [ebx]
push 0x400
push 0
push edi
call fcn.00408ee0
add esp, 0xc
lea eax, [esp + 0x18]
lea ecx, [esp + 0x48]
push eax
push 0x400
push edi
push esi
call fcn.004369b0
xor edx, edx
cmp eax, 0xc0000000
setae dl
mov eax, 3
xor ecx, ecx
jmp dword [edx*4 + 0x44486c]
xor edx, edx
cmp dword [esp + 0x18], 0
sete dl
xor ecx, ecx
jmp dword [edx*4 + 0x444874]
xor eax, eax
mov ecx, 1
jmp dword [0x444884]
mov dword [esp + 0x5c], ebx
mov edx, dword [case.0x4214f3.13]
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp edx
jmp dword [ecx*4 + 0x44489c]
mov byte [esp + 0x45f], 0
movzx edx, byte [esp + 0x60]
xor eax, eax
mov ecx, 0
test dl, dl
je 0x420fb0
mov ecx, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dl, 0x2e
je 0x420fb0
movzx edx, byte [ecx + 1]
inc ecx
test dl, dl
jne 0x420fa0
xor ecx, ecx
xor edx, edx
test ecx, ecx
setne dl
jmp dword [edx*4 + 0x4448a4]
lea esi, [ecx + 1]
mov eax, dword [case.0x4214f3.22]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
jmp dword [0x4448c0]
movzx eax, byte [esi]
test al, al
je case.0x4214f3.24
add ecx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp al, 0x2e
je case.0x4214f3.24
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420ff0
jmp case.0x4214f3.24
jmp dword [0x4448c8]
movzx eax, byte [esi]
xor ebx, ebx
test al, al
je 0x421000
mov ecx, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp al, 0x2e
je 0x421030
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x421020
jmp 0x421000
mov ebx, ecx
jmp dword [0x4448c8]
xor ecx, ecx
test ebx, ebx
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x4448cc]
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x44490c]
mov ecx, dword [case.0x4214f3.43]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
xor eax, eax
jmp ecx
xor ecx, ecx
cmp eax, 3
setl cl
mov ebx, dword [esp + 0x5c]
jmp dword [ecx*4 + 0x444924]
sete al
movzx eax, al
mov edx, dword [esp + 0x14]
jmp dword [eax*4 + 0x44492c]
xor ecx, ecx
test eax, eax
sete cl
mov edx, dword [esp + 0x14]
jmp dword [ecx*4 + 0x444934]
mov ecx, ebx
sub ecx, esi
lea eax, [ecx - 0x1dfb5579]
lea edx, [eax + eax*2]
add edx, 0x59f2006b
shr edx, 2
movzx ecx, byte [ecx + esi - 1]
cmp ecx, 0x3d
je 0x4210ea
cmp ecx, 0x2e
jne 0x4210eb
dec edx
movzx eax, byte [eax + esi + 0x1dfb5577]
cmp eax, 0x3d
je 0x4210fd
cmp eax, 0x2e
jne 0x4210fe
dec edx
mov dword [esp + 0x54], edx
lea eax, [edx + 1]
push eax
call fcn.00408d40
add esp, 4
mov dword [esp + 0x2c], eax
mov edx, esi
not edx
and edx, ebx
add edx, edx
mov dword [esp + 0x38], esi
xor ebx, esi
sub edx, ebx
jne 0x42116c
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x2c]
mov byte [esi + eax], 0
push esi
call fcn.00401ee0
add esp, 4
mov ebx, eax
jmp dword [0x4448d4]
push esi
call fcn.00408d50
add esp, 4
push ebx
call fcn.004027d0
add esp, 4
mov edi, eax
xor eax, eax
test edi, edi
setne al
jmp dword [eax*4 + 0x4448dc]
lea edi, [esp + 0x60]
jmp 0x4213dc
xor esi, esi
mov edi, 2
mov dword [esp + 0x34], edx
jmp 0x42118e
mov ecx, dword [esp + 0x44]
nop
nop
nop
lea eax, [edi + 4]
add edi, 2
mov esi, ecx
cmp edi, edx
mov edi, eax
jae 0x421124
mov ebx, dword [esp + 0x38]
movzx eax, byte [ebx + edi - 2]
push eax
call fcn.0040f8f0
add esp, 4
mov byte [esp + 0x30], al
movzx eax, byte [ebx + edi - 1]
push eax
call fcn.0040f8f0
mov edx, dword [esp + 0x38]
add esp, 4
mov bh, al
movzx ecx, byte [esp + 0x30]
shl cl, 2
shr al, 4
and al, 3
or al, cl
mov ecx, dword [esp + 0x2c]
mov byte [ecx + esi], al
lea ecx, [esi + 1]
cmp edi, edx
jae 0x421180
mov dword [esp + 0x30], esi
mov eax, dword [esp + 0x38]
movzx eax, byte [eax + edi]
push eax
mov esi, ecx
call fcn.0040f8f0
mov ecx, esi
mov edx, dword [esp + 0x38]
add esp, 4
cmp al, 0x40
je 0x421180
mov bl, al
shl bh, 4
shr al, 2
and al, 0xf
or al, bh
mov esi, dword [esp + 0x30]
lea ecx, [esi + 2]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x2c]
mov byte [ecx + esi + 1], al
lea eax, [edi + 1]
cmp eax, edx
jae 0x421179
mov eax, dword [esp + 0x38]
movzx eax, byte [eax + edi + 1]
push eax
call fcn.0040f8f0
mov edx, dword [esp + 0x38]
add esp, 4
cmp al, 0x40
mov ecx, dword [esp + 0x44]
je 0x421180
shl bl, 6
add al, bl
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
mov byte [ecx + esi + 2], al
add esi, 3
mov ecx, esi
jmp 0x421180
jmp dword [0x4448e8]
mov dword [esp + 0x18], 0xb3100403
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x4212d1
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx edx, byte [esp + ecx + 0x18]
lea ecx, [eax - 0x60072d68]
mov esi, ecx
and esi, edx
xor ecx, edx
add eax, 0x98
and eax, edx
add eax, esi
sub ecx, eax
lea eax, [ecx + esi*2]
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0xd8
mov ecx, dword [esp]
mov byte [esp + ecx + 0x18], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x421290
lea eax, [esp + 0x18]
push eax
push edi
call fcn.00402720
add esp, 8
mov dword [esp + 0x18], 0xb3100403
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x421351
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx edx, byte [esp + ecx + 0x18]
lea ecx, [eax - 0x60072d68]
mov esi, ecx
and esi, edx
xor ecx, edx
add eax, 0x98
and eax, edx
add eax, esi
sub ecx, eax
lea eax, [ecx + esi*2]
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0xd8
mov ecx, dword [esp]
mov byte [esp + ecx + 0x18], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x421310
lea eax, [esp + 0x18]
push eax
push edi
call fcn.00402720
add esp, 8
jmp dword [0x4448ec]
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x4448f4]
lea edi, [esp + 0x60]
mov edx, dword [esp + 0x14]
jmp 0x4213b3
mov ecx, dword [case.0x4214f3.41]
lea edi, [esp + 0x60]
mov edx, dword [esp + 0x14]
nop
nop
nop
nop
nop
jmp ecx
movzx ecx, byte [eax]
test cl, cl
je 0x4213ab
inc eax
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x4213a0
mov word [edx], 0x203a
add edx, 2
movzx eax, byte [esp + 0x60]
test al, al
je 0x4213cb
lea ecx, [esp + 0x61]
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4213c0
mov byte [edx], 0
mov byte [edx], 0xa
inc edx
mov dword [esp + 0x14], edx
mov al, 1
mov dword [esp + 0x40], eax
push ebx
call fcn.00402a40
add esp, 4
xor eax, eax
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x44490c]
inc esp
and al, 0x74
push ebp
pop esp
push esi
mov edi, 0xc0782444
and al, 0xc1
int3
test byte [esp + eax*4], ah
add byte [eax], al
add byte [ecx], bh
add dword [ebx], ebp
fadd st(7)
test byte [eax + ecx*4], ah
add byte [eax], al
add byte [ecx], bh
xor eax, 0x84c74b1c
and al, 0x90
add byte [eax], al
add byte [eax], al
add byte [eax], al
add bh, al
test byte [esp + ecx*4], ah
add byte [eax], al
add byte [eax], al
add byte [eax], al
add bh, al
inc esp
and al, 8
add byte [eax], al
add byte [eax], al
mov eax, dword [esp + 8]
cmp eax, 0x33
ja 0x4214cf
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x60]
lea edx, [eax + 0xa9]
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
add eax, 0xbd40baa9
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
add al, 0x61
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x60], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x34
jb 0x421490
lea eax, [esp + 8]
lea ecx, [esp + 0x48]
push 0
push 0x2b
push edi
push eax
call fcn.00436b20
mov esi, dword [esp + 8]
mov ecx, dword [esp + 0xc]
xor eax, eax
cmp esi, ecx
sete al
xor ebx, ebx
jmp dword [eax*4 + 0x44485c]
mov ebx, ecx
xor ecx, esi
mov eax, esi
not eax
and eax, ebx
add eax, eax
sub eax, ecx
sar eax, 2
mov ecx, eax
and ecx, 0x421
mov edx, eax
or eax, 0x421
imul eax, ecx
xor ecx, 0x421
and edx, 0xfffffbde
imul edx, ecx
add eax, edx
push eax
call fcn.00408d40
add esp, 4
mov dword [esp + 0x40], 0
xor ecx, ecx
mov dword [esp + 0x58], ebx
cmp esi, ebx
setne cl
mov dword [esp + 0x3c], eax
mov edx, eax
mov ebx, esi
jmp dword [ecx*4 + 0x444864]
mov eax, dword [esp + 0x40]
mov ecx, eax
and cl, 1
movzx ecx, cl
jmp dword [ecx*4 + 0x44493c]
mov eax, dword [esp + 8]
test eax, eax
je case.0x420ee2.1
cmp eax, dword [esp + 0xc]
je case.0x420ee2.1
push eax
call fcn.00408d50
add esp, 4
jmp case.0x420ee2.1
lea ecx, [esp + 0x48]
call fcn.00436690
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret