Function at 0x1001eaf0
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100499c0
mov eax, dword fs:[0]
push eax
sub esp, 0x4e8
mov eax, dword [0x1009455c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x4dc], ecx
mov esi, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov dword [ebp - 0x4f0], eax
mov dword [ebp - 0x4f4], eax
mov edi, dword [esi + 0x10]
mov dword [ebp - 0x4e8], edi
test edi, edi
jne 0x1001eb55
push esi
mov ecx, eax
call fcn.10013870
mov eax, dword [ebp - 0x4f0]
jmp 0x1001f934
shr edi, 4
lea eax, [edi + 1]
shl eax, 4
mov dword [ebp - 0x4e0], eax
inc eax
push eax
call fcn.10045a98
mov ecx, dword [ebp - 0x4e0]
mov edx, eax
inc ecx
mov dword [ebp - 0x4e4], edx
push ecx
push 0
push edx
call sub.VCRUNTIME140.dll_memset
add esp, 0x10
cmp dword [esi + 0x14], 0x10
jb 0x1001eb8e
mov esi, dword [esi]
mov edx, dword [ebp - 0x4e4]
mov ecx, edx
sub ecx, esi
nop dword [eax + eax]
mov al, byte [esi]
lea esi, [esi + 1]
mov byte [ecx + esi - 1], al
test al, al
jne 0x1001eba0
mov eax, dword [ebp - 0x4e8]
mov ecx, 0x10
and eax, 0xf
sub ecx, eax
test ecx, ecx
jle 0x1001ebd9
shl edi, 4
push ecx
add edi, eax
add edi, edx
push ecx
push edi
call sub.VCRUNTIME140.dll_memset
mov edx, dword [ebp - 0x4e4]
add esp, 0xc
mov eax, dword [ebp - 0x4e0]
lea esi, [eax + 1]
mov byte [eax + edx], 0
push esi
call fcn.10045a98
push esi
push 0
push eax
mov dword [ebp - 0x4e8], eax
call sub.VCRUNTIME140.dll_memset
xor ecx, ecx
mov dword [ebp - method.AES.virtual_0], vtable.AES.0
xor esi, esi
mov byte [ebp - 0x4b0], 0
add esp, 0x10
mov dword [ebp - 0xec], 0
mov dword [ebp - 0xe8], esi
mov dword [ebp - 0x4cc], ecx
mov dword [ebp - 0xe4], ecx
mov dword [ebp - 0x40], ecx
mov edi, 0xf
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x2c], edi
mov byte [ebp - 0x40], cl
mov eax, dword [ebp - 0x4dc]
add eax, 4
mov dword [ebp - 4], 1
mov dword [ebp - 0x4c8], eax
cmp dword [eax + 0x14], 0x10
jb 0x1001ec64
mov eax, dword [eax]
mov dword [ebp - 0x4c8], eax
test eax, eax
je 0x1001f0c6
movups xmm0, xmmword [0x10057498]
push 0x10
lea eax, [ebp - 0xc0]
mov dword [ebp - 0xec], 0x10
push 0x10057498
push eax
mov dword [ebp - 0xe8], 0x10
movups xmmword [ebp - 0xe0], xmm0
call sub.VCRUNTIME140.dll_memcpy
mov edi, dword [ebp - 0xec]
add esp, 0xc
mov eax, dword [ebp - 0xe8]
cmp edi, 0x10
je 0x1001eccb
cmp edi, 0x18
je 0x1001ecc1
mov ecx, 0xe
jmp 0x1001ece4
xor ecx, ecx
cmp eax, 0x20
sete cl
jmp 0x1001ecdd
cmp eax, 0x10
jne 0x1001ecd5
lea ecx, [eax - 6]
jmp 0x1001ece4
xor ecx, ecx
cmp eax, 0x18
setne cl
lea ecx, [ecx*2 + 0xc]
cdq
xor esi, esi
and edx, 3
mov dword [ebp - 0xe4], ecx
add eax, edx
mov dword [ebp - 0x4cc], ecx
sar eax, 2
mov dword [ebp - 0x4bc], eax
test ecx, ecx
js 0x1001ed3c
lea edx, [ebp - 0x4ac]
nop dword [eax + eax]
test eax, eax
jle 0x1001ed28
mov ecx, eax
mov edi, edx
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ebp - 0x4bc]
inc esi
add edx, 0x20
cmp esi, ecx
jle 0x1001ed10
mov edi, dword [ebp - 0xec]
mov dword [ebp - 0x4cc], ecx
xor edx, edx
test ecx, ecx
js 0x1001ed74
lea esi, [ebp - 0x2cc]
test eax, eax
jle 0x1001ed60
mov ecx, eax
mov edi, esi
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ebp - 0x4bc]
inc edx
add esi, 0x20
cmp edx, ecx
jle 0x1001ed48
mov edi, dword [ebp - 0xec]
mov dword [ebp - 0x4cc], ecx
lea edx, [ecx + 1]
imul edx, eax
mov eax, edi
mov dword [ebp - 0x4d4], edx
cdq
and edx, 3
lea esi, [edx + eax]
sar esi, 2
lea eax, [ebp - 0xa0]
mov dword [ebp - 0x4b8], esi
mov dword [ebp - 0x4c4], eax
test esi, esi
jle 0x1001ee48
mov edi, dword [ebp - 0x4c8]
mov dword [ebp - 0x4d8], esi
movzx esi, byte [edi]
lea edi, [edi + 4]
movzx edx, byte [edi - 3]
movzx ecx, byte [edi - 2]
movzx eax, byte [edi - 1]
shl esi, 8
or esi, edx
shl esi, 8
or esi, ecx
shl esi, 8
or esi, eax
mov eax, dword [ebp - 0x4c4]
mov dword [eax], esi
add eax, 4
sub dword [ebp - 0x4d8], 1
mov dword [ebp - 0x4c4], eax
jne 0x1001edb2
xor edi, edi
nop
cmp edi, dword [ebp - 0x4d4]
jge 0x1001f004
mov eax, edi
mov ecx, dword [ebp + edi*4 - 0xa0]
cdq
idiv dword [ebp - 0x4bc]
lea esi, [edx + eax*8]
mov dword [ebp + esi*4 - 0x4ac], ecx
mov ecx, dword [ebp - 0xe4]
mov esi, dword [ebp - 0x4b8]
sub ecx, eax
mov eax, dword [ebp + edi*4 - 0xa0]
inc edi
lea ecx, [edx + ecx*8]
mov dword [ebp + ecx*4 - 0x2cc], eax
cmp edi, esi
jl 0x1001edf0
mov ecx, dword [ebp - 0xe4]
mov dword [ebp - 0x4cc], ecx
jmp 0x1001ee4a
xor edi, edi
cmp edi, dword [ebp - 0x4d4]
jge 0x1001f010
lea edx, [ebp - 0xa4]
mov eax, 0x1005a6b0
lea edx, [edx + esi*4]
movzx ecx, byte [eax]
inc eax
mov dword [ebp - 0x4dc], eax
mov eax, dword [edx]
sar eax, 0x10
movzx eax, al
movsx edx, byte [eax + str.cw]
lea eax, [ebp - 0xa4]
xor edx, ecx
lea eax, [eax + esi*4]
mov ecx, dword [eax]
mov eax, ecx
sar eax, 8
movzx eax, al
shl edx, 8
movzx eax, byte [eax + str.cw]
xor edx, eax
movzx eax, cl
shl edx, 8
sar ecx, 0x18
movzx eax, byte [eax + str.cw]
xor edx, eax
movzx eax, cl
shl edx, 8
mov ecx, 1
movzx eax, byte [eax + str.cw]
xor edx, eax
xor dword [ebp - 0xa0], edx
cmp esi, 8
je 0x1001ef00
cmp esi, ecx
jle 0x1001eef3
nop dword [eax]
nop word [eax + eax]
mov eax, dword [ebp + ecx*4 - 0xa4]
xor dword [ebp + ecx*4 - 0xa0], eax
inc ecx
cmp ecx, esi
jl 0x1001eee0
test esi, esi
jle 0x1001efe9
jmp 0x1001ef84
mov eax, dword [ebp + ecx*4 - 0xa4]
xor dword [ebp + ecx*4 - 0xa0], eax
inc ecx
cmp ecx, 4
jl 0x1001ef00
mov ecx, dword [ebp - 0x94]
mov eax, ecx
sar eax, 0x18
movzx eax, al
movsx edx, byte [eax + str.cw]
mov eax, ecx
sar eax, 0x10
movzx eax, al
shl edx, 8
sar ecx, 8
movzx eax, byte [eax + str.cw]
xor edx, eax
movzx eax, cl
shl edx, 8
mov ecx, 5
movzx eax, byte [eax + str.cw]
xor edx, eax
movzx eax, byte [ebp - 0x94]
shl edx, 8
movzx eax, byte [eax + str.cw]
xor edx, eax
xor dword [ebp - 0x90], edx
nop dword [eax]
mov eax, dword [ebp + ecx*4 - 0xa4]
xor dword [ebp + ecx*4 - 0xa0], eax
inc ecx
cmp ecx, 8
jl 0x1001ef70
xor ecx, ecx
mov dword [ebp - 0x4c4], ecx
nop dword [eax]
cmp edi, dword [ebp - 0x4d4]
jge 0x1001f004
mov eax, edi
mov ecx, dword [ebp + ecx*4 - 0xa0]
cdq
inc edi
idiv dword [ebp - 0x4bc]
lea esi, [edx + eax*8]
mov dword [ebp + esi*4 - 0x4ac], ecx
mov ecx, dword [ebp - 0xe4]
mov esi, dword [ebp - 0x4b8]
sub ecx, eax
mov eax, dword [ebp - 0x4c4]
lea ecx, [edx + ecx*8]
mov eax, dword [ebp + eax*4 - 0xa0]
mov dword [ebp + ecx*4 - 0x2cc], eax
mov ecx, dword [ebp - 0x4c4]
inc ecx
mov dword [ebp - 0x4c4], ecx
cmp ecx, esi
jl 0x1001ef90
lea edx, [ebp - 0xa4]
mov eax, dword [ebp - 0x4dc]
lea edx, [edx + esi*4]
cmp edi, dword [ebp - 0x4d4]
jl 0x1001ee64
mov ecx, dword [ebp - 0xe4]
mov dword [ebp - 0x4cc], ecx
mov esi, 1
mov dword [ebp - 0x4c8], esi
cmp ecx, esi
jle 0x1001f0b6
mov eax, dword [ebp - 0x4bc]
lea edx, [ebp - 0x2ac]
mov dword [ebp - 0x4d4], edx
test eax, eax
jle 0x1001f09c
mov esi, edx
mov edi, eax
nop dword [eax]
mov edx, dword [esi]
lea esi, [esi + 4]
mov eax, edx
sar eax, 0x18
movzx ecx, al
mov eax, edx
sar eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x100596b0]
xor ecx, dword [eax*4 + 0x10059ab0]
mov eax, edx
sar eax, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x10059eb0]
movzx eax, dl
xor ecx, dword [eax*4 + 0x1005a2b0]
mov dword [esi - 4], ecx
sub edi, 1
jne 0x1001f040
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ebp - 0x4bc]
mov edx, dword [ebp - 0x4d4]
mov esi, dword [ebp - 0x4c8]
inc esi
add edx, 0x20
mov dword [ebp - 0x4c8], esi
mov dword [ebp - 0x4d4], edx
cmp esi, ecx
jl 0x1001f035
mov dword [ebp - 0x4cc], ecx
mov edi, dword [ebp - 0x2c]
mov esi, dword [ebp - 0xe8]
mov byte [ebp - 0x4b0], 1
cmp byte [ebp - 0x4b0], 0
je 0x1001f898
mov eax, dword [ebp - 0x4e0]
test eax, eax
je 0x1001f898
xor edx, edx
div esi
test edx, edx
jne 0x1001f898
mov ecx, dword [ebp - 0x4e8]
mov dword [ebp - 0x4dc], edx
mov edx, dword [ebp - 0x4e4]
mov dword [ebp - 0x4d8], ecx
mov ecx, dword [ebp - 0x4cc]
mov dword [ebp - 0x4d4], edx
test eax, eax
je 0x1001f898
nop dword [eax]
cmp byte [ebp - 0x4b0], 0
mov edi, edx
je 0x1001f854
cmp esi, 0x10
jne 0x1001f543
movzx esi, byte [edx]
lea edi, [edx + 1]
movzx edx, byte [edi]
movzx ecx, byte [edi + 1]
shl esi, 8
or esi, edx
movzx eax, byte [edi + 2]
shl esi, 8
or esi, ecx
movzx edx, byte [edi + 4]
shl esi, 8
or esi, eax
movzx ecx, byte [edi + 5]
mov eax, dword [ebp - 0x4ac]
xor eax, esi
movzx esi, byte [edi + 3]
shl esi, 8
or esi, edx
mov dword [ebp - 0x4d0], eax
movzx eax, byte [edi + 6]
movzx edx, byte [edi + 8]
shl esi, 8
or esi, ecx
movzx ecx, byte [edi + 9]
shl esi, 8
or esi, eax
mov eax, dword [ebp - 0x4a8]
xor eax, esi
movzx esi, byte [edi + 7]
shl esi, 8
or esi, edx
mov dword [ebp - 0x4c0], eax
movzx eax, byte [edi + 0xa]
movzx edx, byte [edi + 0xc]
shl esi, 8
or esi, ecx
movzx ecx, byte [edi + 0xd]
shl esi, 8
or esi, eax
mov eax, dword [ebp - 0x4a4]
xor eax, esi
movzx esi, byte [edi + 0xb]
shl esi, 8
or esi, edx
mov dword [ebp - 0x4b8], eax
movzx eax, byte [edi + 0xe]
mov edx, dword [ebp - 0x4a0]
shl esi, 8
or esi, ecx
shl esi, 8
or esi, eax
mov eax, dword [ebp - 0x4cc]
xor edx, esi
mov dword [ebp - 0x4bc], edx
cmp eax, 1
jle 0x1001f38b
dec eax
lea esi, [ebp - 0x484]
mov dword [ebp - 0x4c8], eax
mov eax, dword [ebp - 0x4b8]
mov dword [ebp - 0x4c4], esi
nop word [eax + eax]
sar eax, 8
movzx ecx, al
mov eax, dword [ebp - 0x4c0]
sar eax, 0x10
movzx eax, al
mov edi, dword [ecx*4 + 0x10057eb0]
xor edi, dword [eax*4 + 0x10057ab0]
mov eax, dword [ebp - 0x4d0]
sar eax, 0x18
movzx eax, al
xor edi, dword [eax*4 + 0x100576b0]
movzx eax, dl
xor edi, dword [eax*4 + 0x100582b0]
mov eax, edx
sar eax, 8
xor edi, dword [esi - 8]
movzx ecx, al
mov eax, dword [ebp - 0x4b8]
sar eax, 0x10
movzx eax, al
mov esi, dword [ecx*4 + 0x10057eb0]
xor esi, dword [eax*4 + 0x10057ab0]
mov eax, dword [ebp - 0x4c0]
sar eax, 0x18
movzx eax, al
xor esi, dword [eax*4 + 0x100576b0]
mov eax, dword [ebp - 0x4d0]
movzx eax, al
xor esi, dword [eax*4 + 0x100582b0]
mov eax, dword [ebp - 0x4c4]
xor esi, dword [eax - 4]
mov eax, edx
sar eax, 0x10
movzx ecx, al
mov eax, dword [ebp - 0x4b8]
sar eax, 0x18
movzx eax, al
mov edx, dword [ecx*4 + 0x10057ab0]
xor edx, dword [eax*4 + 0x100576b0]
mov eax, dword [ebp - 0x4d0]
sar eax, 8
movzx eax, al
xor edx, dword [eax*4 + 0x10057eb0]
mov eax, dword [ebp - 0x4c0]
movzx eax, al
xor edx, dword [eax*4 + 0x100582b0]
mov eax, dword [ebp - 0x4c4]
xor edx, dword [eax]
mov eax, dword [ebp - 0x4bc]
sar eax, 0x18
movzx ecx, al
mov eax, dword [ebp - 0x4c0]
sar eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x100576b0]
mov dword [ebp - 0x4c0], esi
mov esi, dword [ebp - 0x4c4]
xor ecx, dword [eax*4 + 0x10057eb0]
add esi, 0x20
mov eax, dword [ebp - 0x4d0]
sar eax, 0x10
movzx eax, al
mov dword [ebp - 0x4d0], edi
xor ecx, dword [eax*4 + 0x10057ab0]
mov eax, dword [ebp - 0x4b8]
movzx eax, al
xor ecx, dword [eax*4 + 0x100582b0]
mov eax, dword [ebp - 0x4c4]
mov dword [ebp - 0x4c4], esi
xor ecx, dword [eax + 4]
mov eax, edx
sub dword [ebp - 0x4c8], 1
mov edx, ecx
mov dword [ebp - 0x4bc], ecx
mov dword [ebp - 0x4b8], eax
jne 0x1001f220
mov eax, dword [ebp - 0x4cc]
shl eax, 5
lea esi, [ebp - 0x4ac]
add esi, eax
mov edi, dword [ebp - 0x4d8]
mov eax, dword [ebp - 0x4d0]
sar eax, 0x18
movzx eax, al
mov edx, dword [esi]
mov ecx, edx
sar ecx, 0x18
xor cl, byte [eax + str.cw]
mov eax, dword [ebp - 0x4c0]
sar eax, 0x10
movzx eax, al
mov byte [edi], cl
mov ecx, edx
sar ecx, 0x10
xor cl, byte [eax + str.cw]
mov eax, dword [ebp - 0x4b8]
sar eax, 8
movzx eax, al
mov byte [edi + 1], cl
mov ecx, edx
sar ecx, 8
xor cl, byte [eax + str.cw]
mov eax, dword [ebp - 0x4bc]
movzx eax, al
mov byte [edi + 2], cl
movzx eax, byte [eax + str.cw]
xor al, dl
mov edx, dword [esi + 4]
mov byte [edi + 3], al
mov ecx, edx
mov eax, dword [ebp - 0x4c0]
sar eax, 0x18
movzx eax, al
sar ecx, 0x18
xor cl, byte [eax + str.cw]
mov eax, dword [ebp - 0x4b8]
sar eax, 0x10
movzx eax, al
mov byte [edi + 4], cl
mov ecx, edx
sar ecx, 0x10
xor cl, byte [eax + str.cw]
mov eax, dword [ebp - 0x4bc]
sar eax, 8
movzx eax, al
mov byte [edi + 5], cl
mov ecx, edx
sar ecx, 8
xor cl, byte [eax + str.cw]
mov eax, dword [ebp - 0x4d0]
movzx eax, al
mov byte [edi + 6], cl
movzx eax, byte [eax + str.cw]
xor al, dl
mov edx, dword [esi + 8]
mov byte [edi + 7], al
mov ecx, edx
mov eax, dword [ebp - 0x4b8]
sar eax, 0x18
movzx eax, al
sar ecx, 0x18
xor cl, byte [eax + str.cw]
mov eax, dword [ebp - 0x4bc]
sar eax, 0x10
mov byte [edi + 8], cl
mov ecx, edx
movzx eax, al
sar ecx, 0x10
xor cl, byte [eax + str.cw]
mov eax, dword [ebp - 0x4d0]
sar eax, 8
mov byte [edi + 9], cl
mov ecx, edx
movzx eax, al
sar ecx, 8
xor cl, byte [eax + str.cw]
mov eax, dword [ebp - 0x4c0]
mov byte [edi + 0xa], cl
movzx eax, al
movzx eax, byte [eax + str.cw]
xor al, dl
mov edx, dword [esi + 0xc]
mov byte [edi + 0xb], al
mov ecx, edx
mov eax, dword [ebp - 0x4bc]
sar eax, 0x18
movzx eax, al
sar ecx, 0x18
xor cl, byte [eax + str.cw]
mov eax, dword [ebp - 0x4d0]
sar eax, 0x10
movzx eax, al
mov byte [edi + 0xc], cl
mov ecx, edx
sar ecx, 0x10
xor cl, byte [eax + str.cw]
mov eax, dword [ebp - 0x4c0]
sar eax, 8
movzx eax, al
mov byte [edi + 0xd], cl
mov ecx, edx
sar ecx, 8
xor cl, byte [eax + str.cw]
mov eax, dword [ebp - 0x4b8]
movzx eax, al
mov byte [edi + 0xe], cl
movzx eax, byte [eax + str.cw]
xor al, dl
mov byte [edi + 0xf], al
mov esi, dword [ebp - 0xe8]
mov edx, dword [ebp - 0x4d4]
jmp 0x1001f85a
mov eax, esi
cdq
and edx, 3
lea esi, [edx + eax]
sar esi, 2
cmp esi, 4
jne 0x1001f577
mov eax, dword [0x1005a6d8]
mov dword [ebp - 0x4bc], eax
mov eax, dword [0x1005a6e0]
mov dword [ebp - 0x4b8], eax
mov eax, dword [0x1005a6e8]
mov dword [ebp - 0x4c4], eax
jmp 0x1001f5af
cmp esi, 6
mov edx, 0x20
mov eax, 0x40
cmove eax, edx
mov edx, dword [eax + 0x1005a6d8]
mov dword [ebp - 0x4bc], edx
mov edx, dword [eax + 0x1005a6e0]
mov eax, dword [eax + 0x1005a6e8]
mov dword [ebp - 0x4b8], edx
mov dword [ebp - 0x4c4], eax
test esi, esi
jle 0x1001f61e
lea eax, [ebp - 0x60]
mov dword [ebp - 0x4c8], 0
mov dword [ebp - 0x4c0], eax
movzx edx, byte [edi]
lea edi, [edi + 4]
movzx ecx, byte [edi - 3]
movzx eax, byte [edi - 2]
shl edx, 8
or edx, ecx
mov ecx, dword [ebp - 0x4c0]
add dword [ebp - 0x4c0], 4
shl edx, 8
or edx, eax
movzx eax, byte [edi - 1]
shl edx, 8
mov dword [ecx], edx
or edx, eax
mov eax, dword [ebp - 0x4c8]
xor edx, dword [ebp + eax*4 - 0x4ac]
inc eax
mov dword [ecx], edx
mov dword [ebp - 0x4c8], eax
cmp eax, esi
jl 0x1001f5c2
mov ecx, dword [ebp - 0xe4]
mov edx, dword [ebp - 0x4b8]
mov dword [ebp - 0x4cc], ecx
mov edi, 1
mov dword [ebp - 0x4d0], edi
cmp ecx, edi
jle 0x1001f73e
lea eax, [ebp - 0x48c]
mov dword [ebp - 0x4ec], eax
nop dword [eax]
mov dword [ebp - 0x4c8], 0
test esi, esi
jle 0x1001f6f6
mov edi, dword [ebp - 0x4bc]
mov ecx, dword [ebp - 0x4c4]
mov dword [ebp - 0x4c0], eax
mov eax, edx
sub eax, edi
sub ecx, edi
mov dword [ebp - 0x4f4], eax
mov dword [ebp - 0x4cc], ecx
add eax, edi
cdq
idiv esi
mov eax, dword [ebp + edx*4 - 0x60]
sar eax, 8
movzx ecx, al
mov eax, dword [ebp - 0x4cc]
add eax, edi
cdq
idiv esi
mov ecx, dword [ecx*4 + 0x10057eb0]
movzx eax, byte [ebp + edx*4 - 0x60]
xor ecx, dword [eax*4 + 0x100582b0]
mov eax, edi
cdq
inc edi
idiv esi
movsx eax, word [ebp + edx*4 - 0x5e]
mov edx, dword [ebp - 0x4c8]
movzx eax, al
xor ecx, dword [eax*4 + 0x10057ab0]
movzx eax, byte [ebp + edx*4 - 0x5d]
xor ecx, dword [eax*4 + 0x100576b0]
mov eax, dword [ebp - 0x4c0]
xor ecx, dword [eax]
add eax, 4
mov dword [ebp + edx*4 - 0x80], ecx
inc edx
mov dword [ebp - 0x4c0], eax
mov eax, dword [ebp - 0x4f4]
mov dword [ebp - 0x4c8], edx
cmp edx, esi
jl 0x1001f676
mov edi, dword [ebp - 0x4d0]
lea eax, [esi*4]
push eax
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0x60]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [ebp - 0x4ec]
inc edi
mov ecx, dword [ebp - 0xe4]
add eax, 0x20
mov edx, dword [ebp - 0x4b8]
add esp, 0xc
mov dword [ebp - 0x4d0], edi
mov dword [ebp - 0x4ec], eax
mov dword [ebp - 0x4cc], ecx
cmp edi, ecx
jl 0x1001f640
mov edi, dword [ebp - 0x4d8]
mov dword [ebp - 0x4d0], 0
test esi, esi
jle 0x1001f532
mov edx, dword [ebp - 0x4b8]
mov eax, ecx
sub dword [ebp - 0x4bc], edx
lea ecx, [ebp - 0x4ac]
shl eax, 5
add ecx, eax
sub dword [ebp - 0x4c4], edx
mov eax, dword [ebp - 0x4d0]
mov dword [ebp - 0x4c8], ecx
movzx eax, byte [ebp + eax*4 - 0x5d]
mov ecx, dword [ecx]
sar ecx, 0x18
xor cl, byte [eax + str.cw]
mov eax, dword [ebp - 0x4bc]
add eax, edx
mov byte [edi], cl
cdq
inc edi
idiv esi
mov ecx, dword [ebp - 0x4c8]
mov dword [ebp - 0x4c0], edi
movsx eax, word [ebp + edx*4 - 0x5e]
mov edi, dword [ecx]
mov ecx, edi
movzx eax, al
sar ecx, 0x10
xor cl, byte [eax + str.cw]
mov eax, dword [ebp - 0x4c0]
mov byte [eax], cl
inc eax
mov dword [ebp - 0x4c0], eax
mov ecx, edi
mov eax, dword [ebp - 0x4b8]
cdq
idiv esi
sar ecx, 8
mov edi, dword [ebp - 0x4c0]
mov eax, dword [ebp + edx*4 - 0x60]
sar eax, 8
movzx eax, al
xor cl, byte [eax + str.cw]
mov eax, dword [ebp - 0x4b8]
add eax, dword [ebp - 0x4c4]
cdq
idiv esi
mov byte [edi], cl
mov ecx, dword [ebp - 0x4c8]
movzx eax, byte [ebp + edx*4 - 0x60]
mov edx, dword [ebp - 0x4b8]
inc edx
mov dword [ebp - 0x4b8], edx
mov al, byte [eax + str.cw]
xor al, byte [ecx]
add ecx, 4
mov byte [edi + 1], al
add edi, 2
mov eax, dword [ebp - 0x4d0]
inc eax
mov dword [ebp - 0x4c8], ecx
mov dword [ebp - 0x4d0], eax
cmp eax, esi
jl 0x1001f781
mov esi, dword [ebp - 0xe8]
mov edx, dword [ebp - 0x4d4]
mov edi, dword [ebp - 0x4d8]
mov eax, dword [ebp - 0x4e0]
add edx, esi
mov dword [ebp - 0x4d4], edx
add edi, esi
xor edx, edx
mov ecx, dword [ebp - 0x4dc]
div esi
mov edx, dword [ebp - 0x4d4]
inc ecx
mov dword [ebp - 0x4dc], ecx
cmp ecx, eax
mov ecx, dword [ebp - 0x4cc]
mov dword [ebp - 0x4d8], edi
jb 0x1001f120
mov edi, dword [ebp - 0x2c]
push dword [ebp - 0x4e0]
mov esi, dword [ebp - 0x4e8]
lea eax, [ebp - 0x28]
push esi
push eax
call fcn.100202c0
push dword [ebp - 0x4e4]
call fcn.10045aa1
push esi
call fcn.10045aa1
mov esi, dword [ebp - 0x4f0]
add esp, 0x14
movups xmm0, xmmword [ebp - 0x28]
mov dword [esi], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
movups xmmword [esi], xmm0
movq xmm0, qword [ebp - 0x18]
movq qword [esi + 0x10], xmm0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
cmp edi, 0x10
jb 0x1001f932
mov ecx, dword [ebp - 0x40]
inc edi
mov eax, ecx
cmp edi, 0x1000
jb 0x1001f928
mov ecx, dword [ecx - 4]
add edi, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x1001f928
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push edi
push ecx
call fcn.10045a8a
add esp, 8
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10045fcb
mov esp, ebp
pop ebp
ret 8