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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10049978
mov eax, dword fs:[0]
push eax
sub esp, 0x500
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 - 0x4f8], ecx
mov edx, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
mov dword [ebp - 0x50c], esi
mov dword [ebp - 0x508], esi
cmp dword [edx + 0x10], 0
push edx
jne 0x1001d0d8
mov ecx, esi
call fcn.10013870
jmp 0x1001df45
lea eax, [ebp - 0x28]
push eax
call fcn.1001fdc0
mov eax, dword [ebp - 0x18]
mov dword [ebp - 4], 0
mov dword [ebp - 0x4fc], eax
lea esi, [eax + 1]
push esi
call fcn.10045a98
cmp dword [ebp - 0x14], 0x10
lea ecx, [ebp - 0x28]
push esi
cmovae ecx, dword [ebp - 0x28]
push ecx
push eax
mov dword [ebp - 0x504], eax
call sub.VCRUNTIME140.dll_memcpy
push esi
call fcn.10045a98
cmp dword [ebp - 0x14], 0x10
lea ecx, [ebp - 0x28]
push esi
cmovae ecx, dword [ebp - 0x28]
push ecx
push eax
mov dword [ebp - 0x4f4], eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0x28
mov dword [ebp - method.AES.virtual_0], vtable.AES.0
mov byte [ebp - 0x4c8], 0
mov dword [ebp - 0x104], 0
mov dword [ebp - 0x100], 0
mov dword [ebp - 0xfc], 0
mov dword [ebp - 0x58], 0
mov edi, 0xf
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], edi
mov byte [ebp - 0x58], 0
mov eax, dword [ebp - 0x4f8]
add eax, 4
mov byte [ebp - 4], 2
mov dword [ebp - 0x4e0], eax
cmp dword [eax + 0x14], 0x10
jb 0x1001d19f
mov eax, dword [eax]
mov dword [ebp - 0x4e0], eax
test eax, eax
je 0x1001ddee
movups xmm0, xmmword [0x10057498]
push 0x10
lea eax, [ebp - 0xd8]
mov dword [ebp - 0x104], 0x10
push 0x10057498
push eax
mov dword [ebp - 0x100], 0x10
movups xmmword [ebp - 0xf8], xmm0
call sub.VCRUNTIME140.dll_memcpy
mov edi, dword [ebp - 0x104]
add esp, 0xc
mov eax, dword [ebp - 0x100]
cmp edi, 0x10
je 0x1001d206
cmp edi, 0x18
je 0x1001d1fc
mov ecx, 0xe
jmp 0x1001d21f
xor ecx, ecx
cmp eax, 0x20
sete cl
jmp 0x1001d218
cmp eax, 0x10
jne 0x1001d210
lea ecx, [eax - 6]
jmp 0x1001d21f
xor ecx, ecx
cmp eax, 0x18
setne cl
lea ecx, [ecx*2 + 0xc]
cdq
xor esi, esi
and edx, 3
mov dword [ebp - 0xfc], ecx
add eax, edx
mov dword [ebp - 0x4e8], ecx
sar eax, 2
mov dword [ebp - 0x4d0], eax
test ecx, ecx
js 0x1001d272
lea edx, [ebp - 0x4c4]
test eax, eax
jle 0x1001d25e
mov ecx, eax
mov edi, edx
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0xfc]
mov eax, dword [ebp - 0x4d0]
inc esi
add edx, 0x20
cmp esi, ecx
jle 0x1001d246
mov edi, dword [ebp - 0x104]
mov dword [ebp - 0x4e8], ecx
xor edx, edx
test ecx, ecx
js 0x1001d2ac
lea esi, [ebp - 0x2e4]
nop
test eax, eax
jle 0x1001d298
mov ecx, eax
mov edi, esi
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0xfc]
mov eax, dword [ebp - 0x4d0]
inc edx
add esi, 0x20
cmp edx, ecx
jle 0x1001d280
mov edi, dword [ebp - 0x104]
mov dword [ebp - 0x4e8], ecx
lea edx, [ecx + 1]
imul edx, eax
mov eax, edi
mov dword [ebp - 0x4ec], edx
cdq
and edx, 3
lea esi, [edx + eax]
sar esi, 2
lea eax, [ebp - 0xb8]
mov dword [ebp - 0x4e4], esi
mov dword [ebp - 0x4dc], eax
test esi, esi
jle 0x1001d388
mov edi, dword [ebp - 0x4e0]
mov dword [ebp - 0x4d4], esi
nop word [eax + eax]
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 - 0x4dc]
mov dword [eax], esi
add eax, 4
sub dword [ebp - 0x4d4], 1
mov dword [ebp - 0x4dc], eax
jne 0x1001d2f0
xor edi, edi
nop dword [eax]
cmp edi, dword [ebp - 0x4ec]
jge 0x1001d544
mov eax, edi
mov ecx, dword [ebp + edi*4 - 0xb8]
cdq
idiv dword [ebp - 0x4d0]
lea esi, [edx + eax*8]
mov dword [ebp + esi*4 - 0x4c4], ecx
mov ecx, dword [ebp - 0xfc]
mov esi, dword [ebp - 0x4e4]
sub ecx, eax
mov eax, dword [ebp + edi*4 - 0xb8]
inc edi
lea ecx, [edx + ecx*8]
mov dword [ebp + ecx*4 - 0x2e4], eax
cmp edi, esi
jl 0x1001d330
mov ecx, dword [ebp - 0xfc]
mov dword [ebp - 0x4e8], ecx
jmp 0x1001d38a
xor edi, edi
cmp edi, dword [ebp - 0x4ec]
jge 0x1001d550
lea edx, [ebp - 0xbc]
mov eax, 0x1005a6b0
lea edx, [edx + esi*4]
movzx ecx, byte [eax]
inc eax
mov dword [ebp - 0x4f8], eax
mov eax, dword [edx]
sar eax, 0x10
movzx eax, al
movsx edx, byte [eax + str.cw]
lea eax, [ebp - 0xbc]
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 - 0xb8], edx
cmp esi, 8
je 0x1001d440
cmp esi, ecx
jle 0x1001d433
nop dword [eax]
nop word [eax + eax]
mov eax, dword [ebp + ecx*4 - 0xbc]
xor dword [ebp + ecx*4 - 0xb8], eax
inc ecx
cmp ecx, esi
jl 0x1001d420
test esi, esi
jle 0x1001d529
jmp 0x1001d4c4
mov eax, dword [ebp + ecx*4 - 0xbc]
xor dword [ebp + ecx*4 - 0xb8], eax
inc ecx
cmp ecx, 4
jl 0x1001d440
mov ecx, dword [ebp - 0xac]
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 - 0xac]
shl edx, 8
movzx eax, byte [eax + str.cw]
xor edx, eax
xor dword [ebp - 0xa8], edx
nop dword [eax]
mov eax, dword [ebp + ecx*4 - 0xbc]
xor dword [ebp + ecx*4 - 0xb8], eax
inc ecx
cmp ecx, 8
jl 0x1001d4b0
xor ecx, ecx
mov dword [ebp - 0x4dc], ecx
nop dword [eax]
cmp edi, dword [ebp - 0x4ec]
jge 0x1001d544
mov eax, edi
mov ecx, dword [ebp + ecx*4 - 0xb8]
cdq
inc edi
idiv dword [ebp - 0x4d0]
lea esi, [edx + eax*8]
mov dword [ebp + esi*4 - 0x4c4], ecx
mov ecx, dword [ebp - 0xfc]
mov esi, dword [ebp - 0x4e4]
sub ecx, eax
mov eax, dword [ebp - 0x4dc]
lea ecx, [edx + ecx*8]
mov eax, dword [ebp + eax*4 - 0xb8]
mov dword [ebp + ecx*4 - 0x2e4], eax
mov ecx, dword [ebp - 0x4dc]
inc ecx
mov dword [ebp - 0x4dc], ecx
cmp ecx, esi
jl 0x1001d4d0
lea edx, [ebp - 0xbc]
mov eax, dword [ebp - 0x4f8]
lea edx, [edx + esi*4]
cmp edi, dword [ebp - 0x4ec]
jl 0x1001d3a4
mov ecx, dword [ebp - 0xfc]
mov dword [ebp - 0x4e8], ecx
mov esi, 1
mov dword [ebp - 0x4e0], esi
cmp ecx, esi
jle 0x1001d5f6
mov eax, dword [ebp - 0x4d0]
lea edx, [ebp - 0x2c4]
mov dword [ebp - 0x4ec], edx
test eax, eax
jle 0x1001d5dc
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 0x1001d580
mov ecx, dword [ebp - 0xfc]
mov eax, dword [ebp - 0x4d0]
mov edx, dword [ebp - 0x4ec]
mov esi, dword [ebp - 0x4e0]
inc esi
add edx, 0x20
mov dword [ebp - 0x4e0], esi
mov dword [ebp - 0x4ec], edx
cmp esi, ecx
jl 0x1001d575
mov dword [ebp - 0x4e8], ecx
mov eax, dword [ebp - 0x4fc]
mov byte [ebp - 0x4c8], 1
test eax, eax
je 0x1001ddeb
mov esi, dword [ebp - 0x100]
xor edx, edx
div esi
test edx, edx
jne 0x1001ddeb
mov edi, dword [ebp - 0x4f4]
mov dword [ebp - 0x4f8], edx
mov edx, dword [ebp - 0x504]
mov dword [ebp - 0x4ec], edx
mov dword [ebp - 0x4f0], edi
test eax, eax
je 0x1001ddeb
nop dword [eax]
nop word [eax + eax]
cmp byte [ebp - 0x4c8], 0
mov edi, edx
je 0x1001dd8d
cmp esi, 0x10
jne 0x1001da69
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 - 0x2e4]
xor eax, esi
movzx esi, byte [edi + 3]
shl esi, 8
or esi, edx
mov dword [ebp - 0x4d8], 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 - 0x2e0]
xor eax, esi
movzx esi, byte [edi + 7]
shl esi, 8
or esi, edx
mov dword [ebp - 0x4e4], 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 - 0x2dc]
xor eax, esi
movzx esi, byte [edi + 0xb]
shl esi, 8
or esi, edx
mov dword [ebp - 0x4d0], eax
movzx eax, byte [edi + 0xe]
shl esi, 8
or esi, ecx
mov ecx, dword [ebp - 0x2d8]
shl esi, 8
or esi, eax
mov eax, dword [ebp - 0x4e8]
xor ecx, esi
mov dword [ebp - 0x4dc], ecx
cmp eax, 1
jle 0x1001d8a1
lea esi, [ebp - 0x2bc]
dec eax
mov dword [ebp - 0x4d4], esi
mov dword [ebp - 0x4e0], eax
nop
mov eax, ecx
mov edx, dword [ebp - 0x4e4]
sar eax, 0x10
movzx ecx, al
mov eax, dword [ebp - 0x4d0]
sar eax, 8
movzx eax, al
mov edi, dword [ecx*4 + 0x10058ab0]
xor edi, dword [eax*4 + 0x10058eb0]
mov eax, dword [ebp - 0x4d8]
sar eax, 0x18
movzx eax, al
xor edi, dword [eax*4 + 0x100586b0]
movzx eax, dl
xor edi, dword [eax*4 + 0x100592b0]
mov eax, dword [ebp - 0x4dc]
xor edi, dword [esi - 8]
sar eax, 8
movzx ecx, al
mov eax, edx
sar eax, 0x18
movzx eax, al
mov esi, dword [ecx*4 + 0x10058eb0]
mov ecx, dword [ebp - 0x4d0]
xor esi, dword [eax*4 + 0x100586b0]
mov eax, dword [ebp - 0x4d8]
sar eax, 0x10
movzx eax, al
xor esi, dword [eax*4 + 0x10058ab0]
movzx eax, cl
xor esi, dword [eax*4 + 0x100592b0]
mov eax, dword [ebp - 0x4d4]
xor esi, dword [eax - 4]
mov eax, ecx
sar eax, 0x18
movzx ecx, al
mov eax, edx
sar eax, 0x10
movzx eax, al
mov edx, dword [ecx*4 + 0x100586b0]
mov ecx, dword [ebp - 0x4dc]
xor edx, dword [eax*4 + 0x10058ab0]
mov eax, dword [ebp - 0x4d8]
sar eax, 8
movzx eax, al
xor edx, dword [eax*4 + 0x10058eb0]
movzx eax, cl
sar ecx, 0x18
movzx ecx, cl
xor edx, dword [eax*4 + 0x100592b0]
mov eax, dword [ebp - 0x4d4]
mov ecx, dword [ecx*4 + 0x100586b0]
xor edx, dword [eax]
mov eax, dword [ebp - 0x4d0]
sar eax, 0x10
movzx eax, al
mov dword [ebp - 0x4d0], edx
xor ecx, dword [eax*4 + 0x10058ab0]
mov eax, dword [ebp - 0x4e4]
sar eax, 8
movzx eax, al
mov dword [ebp - 0x4e4], esi
xor ecx, dword [eax*4 + 0x10058eb0]
mov eax, dword [ebp - 0x4d8]
movzx eax, al
mov dword [ebp - 0x4d8], edi
xor ecx, dword [eax*4 + 0x100592b0]
mov eax, dword [ebp - 0x4d4]
mov esi, eax
add esi, 0x20
mov dword [ebp - 0x4d4], esi
xor ecx, dword [eax + 4]
sub dword [ebp - 0x4e0], 1
mov dword [ebp - 0x4dc], ecx
jne 0x1001d740
mov eax, dword [ebp - 0x4e8]
shl eax, 5
lea esi, [ebp - 0x2e4]
add esi, eax
mov edi, dword [ebp - 0x4f0]
mov eax, dword [ebp - 0x4d8]
sar eax, 0x18
movzx eax, al
mov edx, dword [esi]
mov ecx, edx
sar ecx, 0x18
xor cl, byte [eax + 0x100575b0]
mov eax, dword [ebp - 0x4f0]
mov byte [eax], cl
mov ecx, edx
mov eax, dword [ebp - 0x4dc]
sar eax, 0x10
movzx eax, al
sar ecx, 0x10
xor cl, byte [eax + 0x100575b0]
mov eax, dword [ebp - 0x4f0]
mov byte [eax + 1], cl
mov ecx, edx
mov eax, dword [ebp - 0x4d0]
sar eax, 8
movzx eax, al
sar ecx, 8
xor cl, byte [eax + 0x100575b0]
mov eax, dword [ebp - 0x4f0]
mov byte [eax + 2], cl
mov ecx, dword [ebp - 0x4e4]
movzx eax, cl
movzx eax, byte [eax + 0x100575b0]
xor al, dl
mov edx, dword [ebp - 0x4f0]
mov byte [edx + 3], al
mov eax, ecx
mov edx, dword [esi + 4]
mov ecx, edx
sar eax, 0x18
movzx eax, al
sar ecx, 0x18
xor cl, byte [eax + 0x100575b0]
mov eax, dword [ebp - 0x4f0]
mov byte [eax + 4], cl
mov ecx, edx
mov eax, dword [ebp - 0x4d8]
sar eax, 0x10
movzx eax, al
sar ecx, 0x10
xor cl, byte [eax + 0x100575b0]
mov eax, dword [ebp - 0x4f0]
mov byte [eax + 5], cl
mov ecx, edx
mov eax, dword [ebp - 0x4dc]
sar eax, 8
movzx eax, al
sar ecx, 8
xor cl, byte [eax + 0x100575b0]
mov byte [edi + 6], cl
mov ecx, dword [ebp - 0x4d0]
movzx eax, cl
movzx eax, byte [eax + 0x100575b0]
xor al, dl
mov edx, dword [esi + 8]
mov byte [edi + 7], al
mov eax, ecx
sar eax, 0x18
mov ecx, edx
movzx eax, al
sar ecx, 0x18
xor cl, byte [eax + 0x100575b0]
mov eax, dword [ebp - 0x4e4]
sar eax, 0x10
mov byte [edi + 8], cl
mov ecx, edx
movzx eax, al
sar ecx, 0x10
xor cl, byte [eax + 0x100575b0]
mov eax, dword [ebp - 0x4d8]
mov byte [edi + 9], cl
sar eax, 8
movzx eax, al
mov ecx, edx
sar ecx, 8
xor cl, byte [eax + 0x100575b0]
mov byte [edi + 0xa], cl
mov ecx, dword [ebp - 0x4dc]
movzx eax, cl
sar ecx, 0x18
movzx eax, byte [eax + 0x100575b0]
xor al, dl
mov edx, dword [esi + 0xc]
mov byte [edi + 0xb], al
movzx eax, cl
mov ecx, edx
sar ecx, 0x18
xor cl, byte [eax + 0x100575b0]
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 + 0x100575b0]
mov eax, dword [ebp - 0x4e4]
sar eax, 8
movzx eax, al
mov byte [edi + 0xd], cl
mov ecx, edx
sar ecx, 8
xor cl, byte [eax + 0x100575b0]
mov eax, dword [ebp - 0x4d8]
movzx eax, al
mov byte [edi + 0xe], cl
movzx eax, byte [eax + 0x100575b0]
xor al, dl
mov byte [edi + 0xf], al
mov edx, dword [ebp - 0x4ec]
jmp 0x1001dd93
mov eax, esi
cdq
and edx, 3
lea esi, [edx + eax]
sar esi, 2
cmp esi, 4
jne 0x1001da9d
mov eax, dword [0x1005a6dc]
mov dword [ebp - 0x4e4], eax
mov eax, dword [0x1005a6e4]
mov dword [ebp - 0x4d8], eax
mov eax, dword [0x1005a6ec]
mov dword [ebp - 0x4dc], eax
jmp 0x1001dad5
cmp esi, 6
mov edx, 0x20
mov eax, 0x40
cmove eax, edx
mov edx, dword [eax + 0x1005a6dc]
mov dword [ebp - 0x4e4], edx
mov edx, dword [eax + 0x1005a6e4]
mov eax, dword [eax + 0x1005a6ec]
mov dword [ebp - 0x4d8], edx
mov dword [ebp - 0x4dc], eax
test esi, esi
jle 0x1001db4c
lea eax, [ebp - 0x78]
mov dword [ebp - 0x4e0], 0
mov dword [ebp - 0x4d4], eax
nop dword [eax + 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 - 0x4d4]
add dword [ebp - 0x4d4], 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 - 0x4e0]
xor edx, dword [ebp + eax*4 - 0x2e4]
inc eax
mov dword [ecx], edx
mov dword [ebp - 0x4e0], eax
cmp eax, esi
jl 0x1001daf0
mov ecx, dword [ebp - 0xfc]
mov edx, dword [ebp - 0x4d8]
mov dword [ebp - 0x4e8], ecx
mov edi, 1
mov dword [ebp - 0x4d0], edi
cmp ecx, edi
jle 0x1001dc74
lea eax, [ebp - 0x2c4]
mov dword [ebp - 0x500], eax
nop dword [eax + eax]
mov dword [ebp - 0x4e0], 0
test esi, esi
jle 0x1001dc29
mov edi, dword [ebp - 0x4e4]
mov ecx, dword [ebp - 0x4dc]
mov dword [ebp - 0x4d4], eax
mov eax, edx
sub eax, edi
sub ecx, edi
mov dword [ebp - 0x508], eax
mov dword [ebp - 0x4e8], ecx
add eax, edi
cdq
idiv esi
mov eax, dword [ebp + edx*4 - 0x78]
sar eax, 8
movzx ecx, al
mov eax, dword [ebp - 0x4e8]
add eax, edi
cdq
idiv esi
mov ecx, dword [ecx*4 + 0x10058eb0]
movzx eax, byte [ebp + edx*4 - 0x78]
xor ecx, dword [eax*4 + 0x100592b0]
mov eax, edi
cdq
inc edi
idiv esi
movsx eax, word [ebp + edx*4 - 0x76]
mov edx, dword [ebp - 0x4e0]
movzx eax, al
xor ecx, dword [eax*4 + 0x10058ab0]
movzx eax, byte [ebp + edx*4 - 0x75]
xor ecx, dword [eax*4 + 0x100586b0]
mov eax, dword [ebp - 0x4d4]
xor ecx, dword [eax]
add eax, 4
mov dword [ebp + edx*4 - 0x98], ecx
inc edx
mov dword [ebp - 0x4d4], eax
mov eax, dword [ebp - 0x508]
mov dword [ebp - 0x4e0], edx
cmp edx, esi
jl 0x1001dba6
mov edi, dword [ebp - 0x4d0]
lea eax, [esi*4]
push eax
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0x78]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [ebp - 0x500]
inc edi
mov ecx, dword [ebp - 0xfc]
add eax, 0x20
mov edx, dword [ebp - 0x4d8]
add esp, 0xc
mov dword [ebp - 0x4d0], edi
mov dword [ebp - 0x500], eax
mov dword [ebp - 0x4e8], ecx
cmp edi, ecx
jl 0x1001db70
mov edi, dword [ebp - 0x4f0]
mov dword [ebp - 0x4d0], 0
test esi, esi
jle 0x1001da5e
mov edx, dword [ebp - 0x4d8]
mov eax, ecx
sub dword [ebp - 0x4e4], edx
lea ecx, [ebp - 0x2e4]
shl eax, 5
add ecx, eax
sub dword [ebp - 0x4dc], edx
mov eax, dword [ebp - 0x4d0]
mov dword [ebp - 0x4e0], ecx
nop word [eax + eax]
movzx eax, byte [ebp + eax*4 - 0x75]
mov ecx, dword [ecx]
sar ecx, 0x18
xor cl, byte [eax + 0x100575b0]
mov eax, dword [ebp - 0x4e4]
add eax, edx
mov byte [edi], cl
cdq
inc edi
idiv esi
mov ecx, dword [ebp - 0x4e0]
mov dword [ebp - 0x4d4], edi
movsx eax, word [ebp + edx*4 - 0x76]
mov edi, dword [ecx]
mov ecx, edi
movzx eax, al
sar ecx, 0x10
xor cl, byte [eax + 0x100575b0]
mov eax, dword [ebp - 0x4d4]
mov byte [eax], cl
inc eax
mov dword [ebp - 0x4d4], eax
mov ecx, edi
mov eax, dword [ebp - 0x4d8]
cdq
idiv esi
sar ecx, 8
mov edi, dword [ebp - 0x4d4]
mov eax, dword [ebp + edx*4 - 0x78]
sar eax, 8
movzx eax, al
xor cl, byte [eax + 0x100575b0]
mov eax, dword [ebp - 0x4d8]
add eax, dword [ebp - 0x4dc]
cdq
idiv esi
mov byte [edi], cl
mov ecx, dword [ebp - 0x4e0]
movzx eax, byte [ebp + edx*4 - 0x78]
mov edx, dword [ebp - 0x4d8]
inc edx
mov dword [ebp - 0x4d8], edx
mov al, byte [eax + 0x100575b0]
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 - 0x4e0], ecx
mov dword [ebp - 0x4d0], eax
cmp eax, esi
jl 0x1001dcc0
mov edx, dword [ebp - 0x4ec]
mov edi, dword [ebp - 0x4f0]
mov ecx, dword [ebp - 0x100]
add edx, ecx
add edi, ecx
mov dword [ebp - 0x4ec], edx
mov dword [ebp - 0x4f0], edi
xor edx, edx
mov edi, dword [ebp - 0x4fc]
mov eax, edi
div ecx
mov esi, dword [ebp - 0x4f8]
mov ecx, dword [ebp - 0x4e8]
inc esi
mov edx, dword [ebp - 0x4ec]
cmp esi, eax
mov dword [ebp - 0x4f8], esi
mov esi, dword [ebp - 0x100]
jb 0x1001d650
mov eax, dword [ebp - 0x4f4]
mov al, byte [edi + eax - 1]
mov edi, dword [ebp - 0x44]
jmp 0x1001ddfe
mov edi, dword [ebp - 0x44]
mov eax, dword [ebp - 0x4f4]
mov ecx, dword [ebp - 0x4fc]
mov al, byte [eax + ecx - 1]
movsx esi, al
mov eax, dword [ebp - 0x4fc]
mov edx, eax
sub edx, esi
lea ecx, [eax - 1]
cmp ecx, edx
jb 0x1001de6a
mov eax, dword [ebp - 0x4f4]
movsx eax, byte [ecx + eax]
cmp eax, esi
jne 0x1001de33
mov eax, dword [ebp - 0x4f4]
mov byte [ecx + eax], 0
dec ecx
cmp ecx, edx
jae 0x1001de18
mov esi, eax
jmp 0x1001de70
mov ecx, dword [ebp - 0x4fc]
mov esi, dword [ebp - 0x4f4]
push ecx
push 0
push esi
call sub.VCRUNTIME140.dll_memset
push str.____________
push dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.10014200
add esp, 0x14
mov ecx, eax
push 0x1001c520
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
jmp 0x1001de70
mov esi, dword [ebp - 0x4f4]
mov dword [ebp - 0x40], 0
mov ecx, esi
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0xf
mov byte [ebp - 4], 2
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1001de90
sub ecx, edx
push ecx
push esi
lea ecx, [ebp - 0x40]
call fcn.10013cc0
push dword [ebp - 0x504]
call fcn.10045aa1
push esi
call fcn.10045aa1
mov esi, dword [ebp - 0x50c]
add esp, 8
movups xmm0, xmmword [ebp - 0x40]
mov dword [esi], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
movups xmmword [esi], xmm0
movq xmm0, qword [ebp - 0x30]
movq qword [esi + 0x10], xmm0
cmp edi, 0x10
jb 0x1001df0f
mov ecx, dword [ebp - 0x58]
inc edi
mov eax, ecx
cmp edi, 0x1000
jb 0x1001df05
mov ecx, dword [ecx - 4]
add edi, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1001df35
push edi
push ecx
call fcn.10045a8a
add esp, 8
mov edx, dword [ebp - 0x14]
cmp edx, 0x10
jb 0x1001df45
mov ecx, dword [ebp - 0x28]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x1001df3b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x1001df3b
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push edx
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