Function at 0x4109f0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x21c
mov ecx, dword [0x4dee90]
mov eax, dword [0x4b9de8]
push ebx
push ebp
push esi
mov esi, dword [0x457380]
push edi
push 0x99
push ecx
mov dword [0x4b9dec], eax
call esi
mov edx, dword [0x4dec80]
push 0xa
mov edi, eax
push edx
mov dword [esp + 0x28], edi
call esi
xor ebp, ebp
push ebp
push ebp
push 0x147
push edi
call dword [0x4572c4]
mov ecx, dword [0x52bbcc]
mov dword [esp + 0x30], eax
mov eax, dword [0x4b9de8]
add eax, 0xfffffffd
mov dword [esp + 0x3c], eax
imul eax, eax, 0xa4
add eax, 0x4a5358
mov dword [esp + 0x28], eax
mov eax, dword [eax + 4]
mov edx, dword [eax + ecx - 4]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x18], ebp
mov esi, 0x4dee98
mov byte [esi + 0x1a5], 0
cmp ebp, dword [esp + 0x2c]
jge 0x410ab8
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 4]
add ecx, dword [esp + 0x18]
mov edx, dword [0x4b9de8]
add ecx, dword [0x52bbcc]
push ecx
push edx
push 0
lea ecx, [esp + 0x54]
call fcn.00437770
add esp, 0xc
push 0
push 1
lea eax, [esp + 0x50]
call fcn.0043a970
add esp, 8
jmp 0x410abe
xor eax, eax
mov word [esi + 0xe], ax
mov ecx, dword [0x4dee90]
mov ebx, dword [0x457380]
push 1
push 0
push 0
lea edi, [ebp + 0x93]
push edi
push ecx
call ebx
push eax
call dword [0x45733c]
mov edx, dword [0x4dee90]
push edi
push edx
call ebx
mov ebx, eax
call fcn.00436370
add dword [esp + 0x18], 0xdc
add esi, 0x1a8
inc ebp
cmp esi, 0x4df888
jl 0x410a72
xor ebp, ebp
mov dword [esp + 0x1c], ebp
mov edi, 0x4df896
jmp 0x410b20
xor ebx, ebx
mov dword [esp + 0x18], ebx
jmp 0x410b30
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
mov edx, dword [0x4b9de8]
add eax, ebx
add eax, dword [0x52bbcc]
lea esi, [edi - 0xe]
add eax, dword [ecx + 8]
lea ecx, [esp + 0x48]
push eax
push edx
push 1
mov byte [esi + 0x1a5], 0
call fcn.00437770
add esp, 0xc
push 0
push 0
lea eax, [esp + 0x50]
call fcn.0043a970
movzx eax, word [edi]
add esp, 8
test ax, ax
je 0x410b89
mov ecx, 0x289
cmp ax, cx
jg 0x410b89
inc dword [esp + 0x18]
add ebx, 0x88
add edi, 0x1a8
cmp ebx, 0xff0
jl 0x410b30
mov ebx, dword [esp + 0x20]
push 0
push ebp
push 0x144
push ebx
call dword [0x4572c4]
mov edx, dword [0x52bd4c]
mov eax, dword [esp + 0x18]
mov ecx, dword [0x52bd48]
push edx
push eax
lea esi, [ebp + 1]
push esi
push ecx
lea edx, [esp + 0x138]
push 0x4ab5b0
push edx
call fcn.004499de
add esp, 0x18
lea eax, [esp + 0x128]
push eax
push ebp
push 0x14a
push ebx
call dword [0x4572c4]
add dword [esp + 0x1c], 0x1000
mov ebp, esi
cmp edi, 0x52a116
jl 0x410b20
mov eax, dword [esp + 0x30]
cmp eax, 0xffffffff
jne 0x410c12
xor eax, eax
mov esi, dword [0x4572c4]
push 0
push eax
push 0x14e
push ebx
call esi
mov ecx, dword [0x4dee90]
push ebx
push 0x10099
push 0x111
push ecx
call esi
mov esi, 1
lea esp, [esp]
mov eax, dword [0x4dee90]
lea edx, [esi + 0x9a]
push edx
push eax
call dword [0x457380]
mov ebx, eax
call fcn.00436370
inc esi
cmp esi, 0x1e
jbe 0x410c40
mov ecx, dword [0x52bd88]
xor edi, edi
push edi
push ecx
lea edx, [esp + 0x50]
push str._s___u_
push edx
mov dword [0x52bbf8], edi
call fcn.004499de
mov ecx, dword [0x4dea48]
mov esi, dword [0x457380]
add esp, 0x10
lea eax, [esp + 0x48]
push eax
push 0xc
push ecx
call esi
push eax
call dword [0x4572b8]
cmp dword [0x52bbf8], edi
jne 0x410cc8
mov edx, dword [0x4dea48]
push edi
push edi
push 0xf1
push 0xc
push edx
call dword [0x4572cc]
mov eax, dword [0x4dea48]
push edi
push 0xc
push eax
jmp 0x410cd3
mov ecx, dword [0x4dea48]
push 1
push 0xc
push ecx
call esi
push eax
call dword [0x45734c]
call fcn.0040a690
mov ecx, dword [esp + 0x28]
mov ebp, dword [0x52bbcc]
mov edx, dword [ecx + 0xc]
movzx eax, byte [edx + ebp]
mov esi, dword [ecx + 0x18]
shr al, 2
and al, 1
mov byte [0x52bbe8], al
mov eax, dword [ecx + 0x10]
movzx edx, byte [eax + ebp]
and dl, 1
mov dword [esp + 0x30], esi
mov esi, dword [ecx + 0x1c]
mov byte [0x52bbe9], dl
movzx edx, byte [eax + ebp]
mov dword [esp + 0x2c], esi
mov esi, dword [ecx + 0x20]
mov dword [esp + 0x20], esi
mov esi, dword [ecx + 0x24]
shr dl, 1
and dl, 1
mov dword [esp + 0x1c], esi
mov esi, dword [ecx + 0x14]
mov byte [0x52bbeb], dl
movzx eax, byte [eax + ebp]
mov dword [esp + 0x18], esi
mov esi, dword [ecx + 0x28]
shr al, 2
mov dword [esp + 0x44], esi
mov esi, dword [ecx + 0x2c]
and al, 1
mov dword [esp + 0x34], esi
mov esi, dword [ecx + 0x30]
mov ecx, dword [ecx + 0x34]
mov byte [0x52bbea], al
xor eax, eax
mov dl, 1
mov dword [0x52bbe0], edi
mov dword [0x52bbe4], edi
mov byte [esp + 0x17], dl
mov dword [esp + 0x40], esi
mov dword [esp + 0x38], ecx
lea ebx, [eax + 2]
jmp 0x410d85
mov dl, byte [esp + 0x17]
mov esi, dword [esp + 0x30]
mov ecx, eax
shr ecx, 3
add esi, ecx
mov dword [eax*4 + 0x52a4a8], 0
test byte [esi + ebp], dl
je 0x410dab
mov dword [eax*4 + 0x52a4a8], 4
mov esi, dword [esp + 0x2c]
add esi, ecx
test byte [esi + ebp], dl
je 0x410dbe
or dword [eax*4 + 0x52a4a8], 8
mov esi, dword [esp + 0x20]
add esi, ecx
test byte [esi + ebp], dl
je 0x410dd4
or dword [eax*4 + 0x52a4a8], 0x1000
mov esi, dword [esp + 0x1c]
add esi, ecx
test byte [esi + ebp], dl
je 0x410dea
or dword [eax*4 + 0x52a4a8], 0x2000
mov edx, dword [eax*4 + 0x52a4a8]
test dl, 0xc
jne 0x410dfe
test edx, 0x3000
je 0x410e0e
or edx, 1
inc dword [0x52bbe0]
mov dword [eax*4 + 0x52a4a8], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x24], eax
mov al, byte [esp + 0x17]
add edx, ecx
test byte [edx + ebp], al
mov eax, dword [esp + 0x24]
je 0x410e41
mov edx, dword [eax*4 + 0x52a4a8]
test dl, 1
je 0x410e41
or edx, 2
inc dword [0x52bbe4]
mov dword [eax*4 + 0x52a4a8], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x24], eax
mov al, byte [esp + 0x17]
add edx, ecx
test byte [edx + ebp], al
mov eax, dword [esp + 0x24]
je 0x410e71
mov edx, dword [eax*4 + 0x52a4a8]
test dl, 4
je 0x410e71
or edx, 0x4000
mov dword [eax*4 + 0x52a4a8], edx
mov edx, dword [esp + 0x34]
mov dword [esp + 0x24], eax
mov al, byte [esp + 0x17]
add edx, ecx
test byte [edx + ebp], al
mov eax, dword [esp + 0x24]
je 0x410eaf
mov edx, dword [eax*4 + 0x52a4a8]
mov dword [esp + 0x24], edx
test dl, 8
je 0x410eaf
test edx, 0x4000
jne 0x410eaf
mov esi, edx
or esi, 0x8000
mov dword [eax*4 + 0x52a4a8], esi
mov edx, dword [esp + 0x40]
mov dword [esp + 0x24], eax
mov al, byte [esp + 0x17]
add edx, ecx
test byte [edx + ebp], al
mov eax, dword [esp + 0x24]
je 0x410eea
mov edx, dword [eax*4 + 0x52a4a8]
test edx, 0x1000
je 0x410eea
test edx, 0xc000
jne 0x410eea
or edx, 0x10000
mov dword [eax*4 + 0x52a4a8], edx
mov edx, dword [esp + 0x38]
add edx, ecx
mov cl, byte [esp + 0x17]
test byte [edx + ebp], cl
je 0x410f1d
mov ecx, dword [eax*4 + 0x52a4a8]
test ecx, 0x2000
je 0x410f1d
test ecx, 0x1c000
jne 0x410f1d
or ecx, 0x20000
mov dword [eax*4 + 0x52a4a8], ecx
mov ecx, dword [eax*4 + 0x52a4a8]
test ecx, 0x3c000
jne 0x410f6b
test cl, 4
je 0x410f39
or ecx, 0x4000
jmp 0x410f64
test cl, 8
je 0x410f46
or ecx, 0x8000
jmp 0x410f64
test ecx, 0x1000
je 0x410f56
or ecx, 0x10000
jmp 0x410f64
test ecx, 0x2000
je 0x410f6b
or ecx, 0x20000
mov dword [eax*4 + 0x52a4a8], ecx
cmp eax, 0x1ed
jae 0x411083
mov edx, dword [esp + 0x28]
mov esi, dword [edx + 0x38]
lea ecx, [ebx - 2]
and ecx, 7
mov edx, 1
shl edx, cl
lea ecx, [ebx - 2]
shr ecx, 3
add ecx, esi
mov cl, byte [ecx + ebp]
test cl, dl
je 0x410fa1
or dword [eax*4 + 0x52a4a8], 0x40
lea ecx, [ebx - 1]
and ecx, 7
mov edx, 1
shl edx, cl
lea ecx, [ebx - 1]
shr ecx, 3
add ecx, esi
mov cl, byte [ecx + ebp]
test cl, dl
je 0x410fc5
or dword [eax*4 + 0x52a4a8], 0x20
mov ecx, ebx
and ecx, 7
mov edx, 1
shl edx, cl
mov ecx, ebx
shr ecx, 3
add ecx, esi
mov cl, byte [ecx + ebp]
test cl, dl
je 0x410fea
or dword [eax*4 + 0x52a4a8], 0x80
lea edi, [ebx + 1]
mov ecx, edi
and ecx, 7
mov edx, 1
shl edx, cl
shr edi, 3
add edi, esi
test byte [edi + ebp], dl
je 0x41100e
or dword [eax*4 + 0x52a4a8], 0x200
lea ecx, [ebx + 2]
and ecx, 7
mov edx, 1
shl edx, cl
lea ecx, [ebx + 2]
shr ecx, 3
add ecx, esi
mov cl, byte [ecx + ebp]
test cl, dl
je 0x411035
or dword [eax*4 + 0x52a4a8], 0x100
lea ecx, [ebx + 3]
and ecx, 7
mov edx, 1
shl edx, cl
lea ecx, [ebx + 3]
shr ecx, 3
add ecx, esi
mov cl, byte [ecx + ebp]
test cl, dl
je 0x41105c
or dword [eax*4 + 0x52a4a8], 0x400
lea ecx, [ebx - 4]
and ecx, 7
mov edx, 1
shl edx, cl
lea ecx, [ebx + 4]
shr ecx, 3
add ecx, esi
mov cl, byte [ecx + ebp]
test cl, dl
je 0x411083
or dword [eax*4 + 0x52a4a8], 0x800
mov dl, byte [esp + 0x17]
inc eax
add ebx, 7
rol dl, 1
mov byte [esp + 0x17], dl
cmp ebx, 0x11c1
jb 0x410d81
mov dword [esp + 0x18], 0x4b9d50
mov esi, dword [esp + 0x18]
xor ebx, ebx
xor edi, edi
jmp 0x4110b2
xor ebx, ebx
mov eax, edi
call fcn.00413cd0
cmp eax, ebx
je 0x411265
test byte [eax*4 + 0x52a4a4], 1
je 0x411249
xor esi, esi
cmp byte [edi + 0x4b9dac], 0
mov dword [esp + 0x20], ebx
mov dword [esp + 0x1c], ebx
jbe 0x4111f2
mov ebx, dword [esp + 0x28]
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
mov byte [esi + ecx], 0
movzx eax, byte [edi + 0x4a54b8]
add eax, esi
mov ecx, eax
and ecx, 7
mov edx, 1
shl edx, cl
movzx ecx, byte [edi + 0x4a54a0]
shr eax, 3
add eax, ebp
add ecx, eax
mov eax, dword [ebx + 0x3c]
mov cl, byte [ecx + eax]
test cl, dl
je 0x411133
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
or byte [eax + esi], 1
mov dword [esp + 0x1c], 1
movzx eax, byte [edi + 0x4a54b8]
add eax, esi
mov ecx, eax
and ecx, 7
mov edx, 1
shl edx, cl
movzx ecx, byte [edi + 0x4a54a0]
shr eax, 3
add eax, ecx
add eax, dword [ebx + 0x40]
mov al, byte [eax + ebp]
test al, dl
je 0x411173
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx]
or byte [esi + edx], 2
lea eax, [esi + edx]
mov dword [esp + 0x1c], 1
movzx ecx, byte [edi + 0x4a54b8]
movzx eax, byte [edi + 0x4a54a0]
mov ebx, dword [ebx + 0x44]
add ecx, esi
mov edx, ecx
shr edx, 3
add edx, eax
and ecx, 7
mov eax, 1
shl eax, cl
lea ecx, [edx + ebp]
test byte [ecx + ebx], al
je 0x4111b5
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx]
test byte [ecx + esi], 1
je 0x4111b5
or byte [ecx + esi], 4
mov ebx, dword [esp + 0x28]
jmp 0x4111d3
mov ebx, dword [esp + 0x28]
mov ecx, dword [ebx + 0x48]
add ecx, edx
test byte [ecx + ebp], al
je 0x4111db
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
test byte [eax + esi], 2
je 0x4111db
or byte [eax + esi], 8
mov dword [esp + 0x20], 1
movzx ecx, byte [edi + 0x4b9dac]
inc esi
cmp esi, ecx
jb 0x4110ea
cmp dword [esp + 0x1c], 0
jne 0x4111fb
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
mov byte [eax], 1
cmp dword [esp + 0x20], 0
jne 0x411265
movzx ecx, byte [edi + 0x4b9dac]
xor eax, eax
test ecx, ecx
je 0x411220
mov edx, dword [esp + 0x18]
mov edx, dword [edx]
test byte [edx + eax], 1
jne 0x41123d
inc eax
cmp eax, ecx
jb 0x411215
xor eax, eax
test ecx, ecx
je 0x411265
mov edx, dword [esp + 0x18]
mov edx, dword [edx]
lea esp, [esp]
test byte [edx + eax], 2
jne 0x411243
inc eax
cmp eax, ecx
jb 0x411230
jmp 0x411265
or byte [edx + eax], 4
jmp 0x411265
or byte [edx + eax], 8
jmp 0x411265
xor eax, eax
cmp byte [edi + 0x4b9dac], al
jbe 0x411265
mov ecx, dword [esi]
mov byte [eax + ecx], 0
movzx edx, byte [edi + 0x4b9dac]
inc eax
cmp eax, edx
jb 0x411253
mov esi, dword [esp + 0x18]
inc edi
add esi, 4
mov dword [esp + 0x18], esi
cmp edi, 0x17
jb 0x4110b0
mov eax, dword [0x52bbe4]
mov ecx, dword [0x52be10]
mov edx, dword [0x52bbe0]
push eax
mov eax, dword [0x52be0c]
push ecx
push edx
push eax
lea ecx, [esp + 0x58]
push 0x4ace7c
push ecx
call fcn.004499de
mov eax, dword [0x52a3d4]
add esp, 0x18
lea edx, [esp + 0x48]
push edx
push eax
call dword [0x4572b8]
call fcn.004305a0
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0x28]
movzx edx, byte [eax + eax*4 + 0x4a4cda]
mov ecx, dword [ebx + 0x68]
mov ebp, dword [0x52bbcc]
mov ecx, dword [ecx + ebp]
mov dword [0x52bb6c], ecx
test edx, edx
jne 0x4112e6
xor eax, eax
jmp 0x4112fa
mov eax, dword [0x4b9de8]
imul eax, eax, 0x4a
add eax, edx
mov eax, dword [eax*4 + 0x4a4c64]
add eax, 2
mov esi, eax
and esi, 0xff
je 0x41130d
mov edi, 0x100
sub edi, esi
add eax, edi
mov esi, dword [0x4b9de8]
add esi, 0xfffffffd
imul esi, esi, 0x4a
add esi, edx
movzx edx, word [esi*2 + 0x4a5230]
lea edx, [edx + eax - 4]
cmp eax, edx
jae 0x411352
jmp 0x411330
imul ecx, ecx, 0x41c64e6d
add ecx, 0x6073
mov esi, ecx
shr esi, 0x10
xor word [eax + ebp], si
add eax, 2
cmp eax, edx
jb 0x411330
mov dword [0x52bb6c], ecx
xor eax, eax
xor edx, edx
jmp 0x411360
mov esi, dword [ebx + 0x64]
mov edi, dword [edx + 0x4dea04]
add esi, eax
mov dword [edx + 0x52bb34], 3
add esi, ebp
add eax, 0xcc
mov ecx, 0x33
add edx, 4
rep movsd dword es:[edi], dword [esi]
cmp eax, 0x990
jb 0x411360
mov esi, dword [ebx + 0x60]
mov edi, dword [0x52c424]
mov eax, dword [0x4de56c]
push 1
add esi, ebp
mov ecx, 0x40
push 0xd
rep movsd dword es:[edi], dword [esi]
mov edi, dword [0x457380]
push eax
call edi
mov esi, dword [0x45734c]
push eax
call esi
mov ecx, dword [0x4de56c]
push 1
push 0xe
push ecx
call edi
push eax
call esi
mov edx, dword [0x4dea48]
push 1
push 0xe
push edx
call edi
push eax
call esi
call fcn.00406170
push 0
call fcn.004045a0
add esp, 4
add ebx, 0x6c
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], ebx
jmp 0x411400
mov eax, dword [esp + 0x1c]
movzx edi, byte [eax + 0x4a4ce4]
mov ecx, dword [0x4b9de8]
lea edx, [edi + ecx*8]
movzx eax, word [edx*2 + 0x4a4a38]
mov dword [esp + 0x2c], eax
test eax, eax
je 0x4114d0
xor ebx, ebx
mov dword [esp + 0x20], ebx
cmp eax, ebx
jbe 0x4114d0
cmp dword [esp + 0x20], 0
jne 0x4114af
mov eax, dword [esp + 0x18]
mov edx, dword [eax]
mov eax, dword [0x52bbcc]
lea ecx, [ebx*4]
add edx, ecx
add eax, edx
cmp word [eax + 2], 0
je 0x4114af
mov edx, dword [edi*4 + 0x4d3210]
mov eax, dword [eax]
mov dword [ecx + edx], eax
mov edx, dword [0x4b9de8]
movzx edx, word [edx*2 + 0x4a0458]
xor eax, eax
test edx, edx
je 0x41149f
mov esi, dword [edi*4 + 0x4d3210]
movzx ebp, word [ecx + esi]
mov esi, dword [0x4b9de8]
mov esi, dword [esi*4 + 0x4b9dcc]
cmp word [esi], bp
je 0x4114c5
inc eax
add esi, 2
cmp eax, edx
jb 0x411492
mov eax, dword [edi*4 + 0x4d3210]
mov dword [ecx + eax], 0
jmp 0x4114bd
mov ecx, dword [edi*4 + 0x4d3210]
mov dword [ecx + ebx*4], 0
mov dword [esp + 0x20], 1
inc ebx
cmp ebx, dword [esp + 0x2c]
jb 0x411436
mov eax, dword [esp + 0x1c]
add dword [esp + 0x18], 4
inc eax
mov dword [esp + 0x1c], eax
cmp eax, 5
jb 0x411400
call fcn.00402270
cmp dword [0x4dea64], 0x800a4
ja 0x41154d
mov ecx, dword [esp + 0x28]
mov edx, dword [ecx + 0x94]
mov eax, dword [0x52bbcc]
cmp byte [eax + edx], 1
jne 0x41154d
mov edx, dword [ecx + 0x90]
mov esi, 0xc21e
cmp word [eax + edx], si
jne 0x41154d
mov ecx, dword [ecx + 0x80]
push 0x2600
add ecx, eax
push ecx
push 0x4d8a48
call fcn.0044ab40
add esp, 0xc
push 6
mov dword [0x52bb28], 1
call fcn.004010f0
add esp, 4
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x21c
ret