Function at 0x100350c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1007c113
mov eax, dword fs:[0]
push eax
sub esp, 0x9c
mov eax, dword [0x100a1084]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x54], edi
mov dword [ebp - 4], 0
call fcn.10034d20
xorps xmm0, xmm0
mov dword [ebp - 0x14], 0
xor eax, eax
movq qword [ebp - 0x1c], xmm0
xor ecx, ecx
mov dword [ebp - 0x64], eax
xor edx, edx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x60], eax
mov byte [ebp - 4], 1
mov eax, dword [edi + 0xec]
sub eax, dword [edi + 0xe8]
sar eax, 6
test eax, eax
je 0x100352f9
mov bl, byte [ebp + 0xc]
xor esi, esi
test bl, bl
je 0x100351a2
cmp dword [ebp + 0x24], 0x10
lea eax, [ebp - 0x63]
mov edx, dword [ebp + 0x20]
lea ecx, [ebp + 0x10]
cmovae ecx, dword [ebp + 0x10]
push 0
mov word [ebp - 0x64], 0x31
push eax
mov byte [ebp - 0x63], 0
call fcn.10002a10
add esp, 8
test eax, eax
jne 0x1003519a
mov ecx, dword [edi + 0xe8]
movzx eax, bl
cmp dword [ecx + esi + 0x30], eax
jne 0x100352cc
mov eax, dword [edi + 0xe8]
lea ecx, [ebp - 0x1c]
add eax, esi
push eax
call fcn.10036730
jmp 0x100352cc
test bl, bl
jne 0x1003540d
cmp dword [ebp + 0x24], 0x10
lea eax, [ebp - 0x5b]
mov edx, dword [ebp + 0x20]
lea ecx, [ebp + 0x10]
cmovae ecx, dword [ebp + 0x10]
push 0
mov word [ebp - 0x5c], 0x44
push eax
mov byte [ebp - 0x5b], 0
call fcn.10002a10
add esp, 8
test eax, eax
je 0x10035184
mov eax, dword [edi + 0xe8]
mov ecx, dword [eax + esi + 0x1c]
test ecx, ecx
jne 0x100351de
xor ebx, ebx
jmp 0x10035203
mov eax, 0x10624dd3
mul ecx
mov ecx, 0xd78ae8
shr edx, 6
imul eax, edx, 0x3e8
push eax
call fcn.10015da0
mov ecx, eax
call dword [0x1009444c]
mov ebx, eax
mov ecx, dword [edi + 0xe8]
cmp dword [esi + ecx + 0x1c], 0
jbe 0x10035395
cmp dword [esi + ecx + 0x1c], 0x5f5e100
jae 0x10035395
sub esp, 0x18
mov ecx, esp
mov dword [ebp - 0x6c], esp
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
mov dword [ecx + 0x14], 0xf
cmp dword [ecx + 0x14], 0x10
mov dword [ecx + 0x10], 0
jb 0x10035250
mov eax, dword [ecx]
jmp 0x10035252
mov eax, ecx
push 0xffffffffffffffff
mov byte [eax], 0
lea eax, [ebp + 0x10]
push 0
push eax
call fcn.10002470
sub esp, 0x18
mov byte [ebp - 4], 2
mov eax, dword [edi + 0xe8]
mov ecx, esp
add eax, esi
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
mov dword [ecx + 0x14], 0xf
cmp dword [ecx + 0x14], 0x10
mov dword [ecx + 0x10], 0
jb 0x10035299
mov edx, dword [ecx]
jmp 0x1003529b
mov edx, ecx
push 0xffffffffffffffff
push 0
push eax
mov byte [edx], 0
call fcn.10002470
mov byte [ebp - 4], 1
call fcn.10014230
add esp, 0x30
test al, al
je 0x100352c9
mov eax, dword [edi + 0xe8]
lea ecx, [ebp - 0x1c]
add eax, esi
push eax
call fcn.10036730
mov bl, byte [ebp + 0xc]
mov eax, dword [edi + 0xec]
add esi, 0x40
mov ecx, dword [ebp - 0x60]
sub eax, dword [edi + 0xe8]
inc ecx
sar eax, 6
mov dword [ebp - 0x60], ecx
cmp ecx, eax
jb 0x10035143
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x64], eax
mov ebx, edx
sub ebx, ecx
cmp ebx, 0x40
jae 0x10035580
mov eax, dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
lea ebx, [edi + 0xac]
mov edi, 0xc
mov esi, dword [ebx]
test esi, esi
je 0x10035333
push 4
push esi
call eax
test eax, eax
jne 0x1003532e
push eax
mov ecx, esi
call dword [0x10094488]
mov eax, dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
add ebx, 4
sub edi, 1
jne 0x10035316
mov edi, dword [ebp - 0x54]
mov esi, dword [edi + 0x194]
mov ebx, dword [edi + 0x19c]
test esi, esi
je 0x10035360
push 4
push esi
call eax
test eax, eax
jne 0x10035360
push ebx
mov ecx, esi
call dword [0x100944b4]
mov ebx, dword [ebp - 0x1c]
mov dword [edi + 0x1a0], 1
test ebx, ebx
je 0x10035fb1
mov edi, dword [ebp - 0x18]
mov esi, ebx
cmp ebx, edi
je 0x10035fa2
mov ecx, esi
call fcn.10037970
add esi, 0x40
cmp esi, edi
jne 0x10035382
jmp 0x10035fa2
test ebx, ebx
je 0x100352c9
mov edx, dword [edi + 0xe8]
mov cl, byte [ebx + 4]
mov edx, dword [edx + esi + 0x1c]
call fcn.100120c0
sub esp, 0x18
mov dword [ebp - 0x50], eax
mov ecx, esp
mov dword [ebp - 0x6c], esp
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
mov dword [ecx + 0x14], 0xf
cmp dword [ecx + 0x14], 0x10
mov dword [ecx + 0x10], 0
jb 0x100353e0
mov eax, dword [ecx]
jmp 0x100353e2
mov eax, ecx
push 0xffffffffffffffff
mov byte [eax], 0
lea eax, [ebp + 0x10]
push 0
push eax
call fcn.10002470
mov byte [ebp - 4], 3
sub esp, 0x18
mov edx, ebx
mov ecx, esp
push dword [ebp - 0x50]
call fcn.10012500
add esp, 4
jmp 0x100352a8
cmp dword [ebp + 0x24], 0x10
lea eax, [ebp - 0x57]
mov edx, dword [ebp + 0x20]
lea ecx, [ebp + 0x10]
cmovae ecx, dword [ebp + 0x10]
push 0
mov word [ebp - 0x58], 0x3f
push eax
mov byte [ebp - 0x57], 0
call fcn.10002a10
add esp, 8
test eax, eax
je 0x10035184
mov ecx, dword [edi + 0xe8]
movzx eax, bl
cmp dword [ecx + esi + 0x30], eax
jne 0x100352cc
mov eax, ecx
mov ecx, dword [eax + esi + 0x1c]
test ecx, ecx
jne 0x1003545c
xor ebx, ebx
jmp 0x10035481
mov eax, 0x10624dd3
mul ecx
mov ecx, 0xd78ae8
shr edx, 6
imul eax, edx, 0x3e8
push eax
call fcn.10015da0
mov ecx, eax
call dword [0x1009444c]
mov ebx, eax
mov ecx, dword [edi + 0xe8]
cmp dword [ecx + esi + 0x1c], 0
jbe 0x1003551a
cmp dword [ecx + esi + 0x1c], 0x5f5e100
jae 0x1003551a
sub esp, 0x18
mov ecx, esp
mov dword [ebp - 0x6c], esp
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
mov dword [ecx + 0x14], 0xf
cmp dword [ecx + 0x14], 0x10
mov dword [ecx + 0x10], 0
jb 0x100354ca
mov eax, dword [ecx]
jmp 0x100354cc
mov eax, ecx
push 0xffffffffffffffff
mov byte [eax], 0
lea eax, [ebp + 0x10]
push 0
push eax
call fcn.10002470
sub esp, 0x18
mov byte [ebp - 4], 4
mov eax, dword [edi + 0xe8]
mov ecx, esp
add eax, esi
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
mov dword [ecx + 0x14], 0xf
cmp dword [ecx + 0x14], 0x10
mov dword [ecx + 0x10], 0
jb 0x10035299
mov edx, dword [ecx]
jmp 0x1003529b
test ebx, ebx
je 0x100352c9
mov edx, dword [edi + 0xe8]
mov cl, byte [ebx + 4]
mov edx, dword [edx + esi + 0x1c]
call fcn.100120c0
sub esp, 0x18
mov dword [ebp - 0x50], eax
mov ecx, esp
mov dword [ebp - 0x6c], esp
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
mov dword [ecx + 0x14], 0xf
cmp dword [ecx + 0x14], 0x10
mov dword [ecx + 0x10], 0
jb 0x10035565
mov eax, dword [ecx]
jmp 0x10035567
mov eax, ecx
push 0xffffffffffffffff
mov byte [eax], 0
lea eax, [ebp + 0x10]
push 0
push eax
call fcn.10002470
mov byte [ebp - 4], 5
jmp 0x100353f6
lea eax, [ebp - 0x50]
sar ebx, 6
push eax
push ebx
mov dword [ebp - 0x50], 0x10034a90
mov dword [ebp - 0x74], ebx
call fcn.10036a20
movd xmm0, ebx
mov eax, ebx
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x10096270]
divsd xmm0, qword [0x10095bc8]
movsd qword [ebp - 0x70], xmm0
fld qword [ebp - 0x70]
fstp qword [esp]
call fcn.10075430
fstp qword [ebp - 0x70]
movsd xmm0, qword [ebp - 0x70]
movsd qword [esp], xmm0
call fcn.1002e4a0
fnstcw word [ebp - 0x56]
movzx eax, word [ebp - 0x56]
add esp, 8
or eax, 0xc00
mov ebx, dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
mov dword [ebp - 0x50], eax
or ecx, 0xffffffff
fldcw word [ebp - 0x50]
fistp qword [ebp - 0x70]
mov eax, dword [ebp - 0x70]
mov dword [edi + 0x1a0], eax
mov eax, dword [ebp + 8]
fldcw word [ebp - 0x56]
lea eax, [eax + eax*2]
shl eax, 2
mov dword [ebp - 0x6c], eax
lea esi, [eax - 0xc]
mov dword [ebp - 0x50], esi
cmp esi, eax
jge 0x10035f5d
nop
inc ecx
mov dword [ebp - 0x58], ecx
cmp ecx, 0xe
jg 0x10035f5d
mov eax, dword [ebp - 0x74]
dec eax
cmp esi, eax
jle 0x10035657
mov esi, dword [edi + ecx*4 + 0xac]
test esi, esi
je 0x10035f4d
push 4
push esi
call ebx
test eax, eax
jne 0x10035f4a
push eax
jmp 0x10035f42
mov edx, esi
mov esi, dword [ebp - 0x1c]
shl edx, 6
add esi, edx
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x5c], esi
mov ecx, dword [esi + 0x1c]
test ecx, ecx
jne 0x10035672
xor ebx, ebx
jmp 0x1003569a
mov eax, 0x10624dd3
mul ecx
mov ecx, 0xd78ae8
shr edx, 6
imul eax, edx, 0x3e8
push eax
call fcn.10015da0
mov ecx, eax
call dword [0x1009444c]
mov edx, dword [ebp - 0x60]
mov ebx, eax
mov eax, dword [esi + 0x1c]
mov dword [ebp - 0x54], ebx
test eax, eax
je 0x100358d1
cmp eax, 0x5f5e100
jae 0x100358d1
mov ecx, dword [ebp - 0x58]
mov eax, dword [esi + 0x18]
lea ebx, [ecx*8]
sub ebx, ecx
mov ecx, dword [edi + 0xdc]
shl ebx, 3
mov dword [ebx + ecx + 0x1c], eax
mov ecx, dword [edi + 0xdc]
mov eax, dword [ebp - 0x1c]
mov eax, dword [edx + eax + 0x1c]
mov dword [ebx + ecx + 0x20], eax
mov eax, dword [ebp - 0x1c]
mov ecx, dword [edi + 0xdc]
add eax, 0x34
add eax, edx
add ecx, 0x24
push eax
add ecx, ebx
call fcn.100377c0
mov ecx, dword [edi + 0xdc]
mov edx, esi
mov ecx, dword [ebx + ecx]
call fcn.10015b30
mov eax, dword [edi + 0xdc]
mov esi, eax
mov edx, dword [eax + ebx + 0x28]
sub edx, dword [eax + ebx + 0x24]
sar edx, 2
call fcn.10013ec0
mov ecx, dword [esi + ebx + 0x24]
mov esi, dword [ecx + eax*4 - 4]
mov dword [ebp - 0x60], esi
test esi, esi
je 0x10035af6
mov eax, 0x10624dd3
mov ecx, 0xd78ae8
mul esi
shr edx, 6
imul eax, edx, 0x3e8
push eax
call fcn.10015da0
mov ecx, eax
call dword [0x1009444c]
mov dword [ebp - 0x54], eax
test eax, eax
je 0x10035af6
mov dword [ebp - 0x20], 0xf
mov byte [ebp - 4], 6
mov edx, esi
mov cl, byte [eax + 4]
mov dword [ebp - 0x24], 0
mov byte [ebp - 0x34], 0
call fcn.100120c0
mov esi, eax
test esi, esi
je 0x100357b8
cmp dword [esi + 0x48], 0
je 0x100357b8
push dword [ebp - 0x60]
xor edx, edx
lea ecx, [ebp - 0x8c]
push esi
call fcn.10012170
add esp, 8
lea ecx, [ebp - 0x34]
push eax
call fcn.100074c0
lea ecx, [ebp - 0x8c]
call fcn.10002360
jmp 0x100357f2
push dword [ebp - 0x60]
mov edx, dword [ebp - 0x54]
lea ecx, [ebp - 0x8c]
push 0
call fcn.10012170
add esp, 8
lea ecx, [ebp - 0x34]
push eax
call fcn.100074c0
mov eax, dword [ebp - 0x78]
cmp eax, 0x10
jb 0x100357f2
inc eax
lea ecx, [ebp - 0x8c]
push eax
push dword [ebp - 0x8c]
call fcn.10002790
mov eax, dword [edi + 0xdc]
cmp dword [ebx + eax + 0x18], 0
je 0x100358ac
mov ecx, dword [ebx + eax + 0x18]
lea edx, [ebp - 0x34]
add ecx, 4
call fcn.10013bd0
mov eax, dword [edi + 0xdc]
mov ecx, dword [ebp - 0x54]
mov eax, dword [ebx + eax + 0x18]
mov dword [eax + 0x50], ecx
mov eax, dword [edi + 0xdc]
mov eax, dword [ebx + eax + 0x18]
mov dword [eax + 0x54], esi
mov eax, dword [edi + 0xdc]
mov eax, dword [ebx + eax + 0x18]
mov dword [eax + 0x58], 1
test esi, esi
je 0x10035850
movsx edx, word [esi + 0x56]
movsx eax, word [ecx + 0x66]
add edx, eax
jmp 0x10035854
movsx edx, word [ecx + 0x66]
mov eax, dword [edi + 0xdc]
mov esi, dword [ebp - 0x5c]
mov eax, dword [ebx + eax + 0x18]
mov dword [eax + 0x5c], edx
mov eax, dword [edi + 0xdc]
mov ecx, dword [ebx + eax + 0x18]
mov eax, dword [esi + 0x2c]
mov dword [ecx + 0x4c], eax
mov eax, dword [edi + 0xdc]
mov eax, dword [ebx + eax + 0x18]
cmp dword [eax], 0
je 0x100358af
mov eax, dword [edi + 0xdc]
lea edx, [ebp - 0x34]
mov ecx, dword [ebx + eax + 0x18]
mov ecx, dword [ecx]
call fcn.100159f0
mov eax, dword [edi + 0xdc]
mov dl, 1
mov ecx, dword [ebx + eax + 0x18]
mov ecx, dword [ecx]
call fcn.10015990
jmp 0x100358af
mov esi, dword [ebp - 0x5c]
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x20]
cmp eax, 0x10
jb 0x10035af9
inc eax
lea ecx, [ebp - 0x34]
push eax
push dword [ebp - 0x34]
call fcn.10002790
jmp 0x10035af9
test ebx, ebx
jne 0x100358e3
mov ecx, dword [ebp - 0x58]
mov ebx, dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
jmp 0x10035635
mov dword [ebp - 0x38], 0xf
mov byte [ebp - 4], 7
mov edx, eax
mov cl, byte [ebx + 4]
mov dword [ebp - 0x3c], 0
mov byte [ebp - 0x4c], 0
call fcn.100120c0
mov dword [ebp - 0x60], eax
test eax, eax
je 0x1003592f
cmp dword [eax + 0x48], 0
je 0x1003592f
push dword [esi + 0x1c]
xor edx, edx
lea ecx, [ebp - 0x8c]
push eax
call fcn.10012170
add esp, 8
lea ecx, [ebp - 0x4c]
push eax
call fcn.100074c0
jmp 0x10035981
push dword [esi + 0x1c]
mov edx, ebx
lea ecx, [ebp - 0x8c]
push 0
call fcn.10012170
add esp, 8
mov dword [ebp - 0x5c], eax
lea ecx, [ebp - 0x4c]
cmp ecx, eax
je 0x1003597d
mov eax, dword [ebp - 0x38]
cmp eax, 0x10
jb 0x10035960
inc eax
push eax
push dword [ebp - 0x4c]
call fcn.10002790
push dword [ebp - 0x5c]
lea ecx, [ebp - 0x4c]
mov dword [ebp - 0x38], 0xf
mov dword [ebp - 0x3c], 0
mov byte [ebp - 0x4c], 0
call fcn.10005910
mov byte [ebp - 4], 7
mov eax, dword [ebp - 0x78]
cmp eax, 0x10
jb 0x1003599c
inc eax
lea ecx, [ebp - 0x8c]
push eax
push dword [ebp - 0x8c]
call fcn.10002790
push dword [ebp - 0x60]
mov edx, ebx
lea ecx, [ebp - 0x8c]
call fcn.10012500
add esp, 4
mov byte [ebp - 4], 9
mov edx, eax
mov ecx, dword [ebp - 0x58]
lea ebx, [ecx*8]
sub ebx, ecx
mov ecx, dword [edi + 0xdc]
shl ebx, 3
mov ecx, dword [ebx + ecx]
call fcn.10015b30
mov byte [ebp - 4], 7
mov eax, dword [ebp - 0x78]
cmp eax, 0x10
jb 0x100359f1
inc eax
lea ecx, [ebp - 0x8c]
push eax
push dword [ebp - 0x8c]
call fcn.10002790
mov ecx, dword [edi + 0xdc]
mov eax, dword [esi + 0x18]
mov dword [ebx + ecx + 0x1c], eax
mov ecx, dword [edi + 0xdc]
mov eax, dword [esi + 0x1c]
mov dword [ebx + ecx + 0x20], eax
mov eax, dword [edi + 0xdc]
cmp dword [ebx + eax + 0x18], 0
je 0x10035adb
mov ecx, dword [ebx + eax + 0x18]
lea edx, [ebp - 0x4c]
add ecx, 4
call fcn.10013bd0
mov eax, dword [edi + 0xdc]
mov ecx, dword [ebp - 0x54]
mov edx, dword [ebp - 0x60]
mov eax, dword [ebx + eax + 0x18]
mov dword [eax + 0x50], ecx
mov eax, dword [edi + 0xdc]
mov eax, dword [ebx + eax + 0x18]
mov dword [eax + 0x54], edx
mov eax, dword [edi + 0xdc]
mov eax, dword [ebx + eax + 0x18]
mov dword [eax + 0x58], 1
test edx, edx
je 0x10035a6c
movsx edx, word [edx + 0x56]
movsx eax, word [ecx + 0x66]
add edx, eax
jmp 0x10035a70
movsx edx, word [ecx + 0x66]
mov eax, dword [edi + 0xdc]
mov eax, dword [ebx + eax + 0x18]
mov dword [eax + 0x5c], edx
mov eax, dword [edi + 0xdc]
mov ecx, dword [ebx + eax + 0x18]
mov eax, dword [esi + 0x2c]
mov dword [ecx + 0x4c], eax
mov eax, dword [edi + 0xdc]
mov eax, dword [ebx + eax + 0x18]
cmp dword [eax], 0
je 0x10035adb
mov eax, dword [edi + 0xdc]
lea edx, [ebp - 0x4c]
mov ecx, dword [ebx + eax + 0x18]
mov ecx, dword [ecx]
call fcn.100159f0
mov eax, dword [edi + 0xdc]
mov eax, dword [ebx + eax + 0x18]
mov eax, dword [eax]
mov dword [ebp - 0x54], eax
test eax, eax
je 0x10035adb
push 4
push eax
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x10035adb
mov ecx, dword [ebp - 0x54]
push 1
call dword [0x10094488]
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x38]
cmp eax, 0x10
jb 0x10035af9
inc eax
lea ecx, [ebp - 0x4c]
push eax
push dword [ebp - 0x4c]
call fcn.10002790
jmp 0x10035af9
mov esi, dword [ebp - 0x5c]
mov eax, dword [esi + 0x24]
cmp eax, 1
jne 0x10035bbe
mov edx, dword [esi + 0x20]
push ecx
lea ecx, [ebp - 0x8c]
call fcn.100143e0
add esp, 4
mov byte [ebp - 4], 0xa
cmp dword [eax + 0x14], 0x10
jb 0x10035b23
mov eax, dword [eax]
movaps xmm0, xmmword [str.rR_R91R_]
xor ecx, ecx
push eax
movups xmmword [ebp - 0x30], xmm0
mov byte [ebp - 0x20], 0
mov al, byte [ebp - 0x30]
xor byte [ebp + ecx - 0x2f], al
inc ecx
cmp ecx, 0xf
jb 0x10035b35
sub esp, 0x18
mov byte [ebp - 0x20], 0
mov edx, esp
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 0
mov dword [edx + 0x14], 0xf
cmp dword [edx + 0x14], 0x10
mov dword [edx + 0x10], 0
jb 0x10035b71
mov eax, dword [edx]
jmp 0x10035b73
mov eax, edx
mov byte [eax], 0
cmp byte [ebp - 0x2f], 0
jne 0x10035b80
xor ecx, ecx
jmp 0x10035b9a
lea ecx, [ebp - 0x2f]
lea eax, [ecx + 1]
mov dword [ebp - 0x54], eax
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10035b90
sub ecx, dword [ebp - 0x54]
push ecx
lea eax, [ebp - 0x2f]
mov ecx, edx
push eax
call fcn.100028b0
lea eax, [ebp - 0xa4]
push eax
call fcn.10005a00
add esp, 0x20
mov byte [ebp - 4], 0xb
jmp 0x10035c79
cmp eax, 2
jne 0x10035ce2
mov edx, dword [esi + 0x20]
push ecx
lea ecx, [ebp - 0x8c]
call fcn.100143e0
add esp, 4
mov byte [ebp - 4], 0xc
cmp dword [eax + 0x14], 0x10
jb 0x10035be5
mov eax, dword [eax]
movaps xmm0, xmmword [0x100966f0]
xor ecx, ecx
push eax
movups xmmword [ebp - 0x30], xmm0
mov byte [ebp - 0x20], 0
mov al, byte [ebp - 0x30]
xor byte [ebp + ecx - 0x2f], al
inc ecx
cmp ecx, 0xf
jb 0x10035bf7
sub esp, 0x18
mov byte [ebp - 0x20], 0
mov edx, esp
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 0
mov dword [edx + 0x14], 0xf
cmp dword [edx + 0x14], 0x10
mov dword [edx + 0x10], 0
jb 0x10035c33
mov eax, dword [edx]
jmp 0x10035c35
mov eax, edx
mov byte [eax], 0
cmp byte [ebp - 0x2f], 0
jne 0x10035c42
xor ecx, ecx
jmp 0x10035c5a
lea ecx, [ebp - 0x2f]
lea eax, [ecx + 1]
mov dword [ebp - 0x54], eax
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10035c50
sub ecx, dword [ebp - 0x54]
push ecx
lea eax, [ebp - 0x2f]
mov ecx, edx
push eax
call fcn.100028b0
lea eax, [ebp - 0xa4]
push eax
call fcn.10005a00
add esp, 0x20
mov byte [ebp - 4], 0xd
mov ecx, dword [edi + 0xdc]
mov edx, eax
mov ecx, dword [ebx + ecx + 4]
call fcn.10015b30
mov eax, dword [ebp - 0x90]
cmp eax, 0x10
jb 0x10035ca8
inc eax
lea ecx, [ebp - 0xa4]
push eax
push dword [ebp - 0xa4]
call fcn.10002790
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x78]
mov byte [ebp - 0xa4], 0
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x90], 0xf
cmp eax, 0x10
jb 0x10035ce2
inc eax
lea ecx, [ebp - 0x8c]
push eax
push dword [ebp - 0x8c]
call fcn.10002790
mov edx, dword [esi + 0x28]
push ecx
lea ecx, [ebp - 0x8c]
call fcn.100143e0
add esp, 4
mov byte [ebp - 4], 0xe
cmp dword [eax + 0x14], 0x10
jb 0x10035d00
mov eax, dword [eax]
movaps xmm0, xmmword [0x10095e30]
xor ecx, ecx
push eax
movups xmmword [ebp - 0x30], xmm0
mov word [ebp - 0x20], 0x43
mov al, byte [ebp - 0x30]
xor byte [ebp + ecx - 0x2f], al
inc ecx
cmp ecx, 0x10
jb 0x10035d14
sub esp, 0x18
mov byte [ebp - 0x1f], 0
mov edx, esp
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 0
mov dword [edx + 0x14], 0xf
cmp dword [edx + 0x14], 0x10
mov dword [edx + 0x10], 0
jb 0x10035d50
mov eax, dword [edx]
jmp 0x10035d52
mov eax, edx
mov byte [eax], 0
cmp byte [ebp - 0x2f], 0
jne 0x10035d5f
xor ecx, ecx
jmp 0x10035d72
lea ecx, [ebp - 0x2f]
lea eax, [ecx + 1]
mov dword [ebp - 0x54], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10035d68
sub ecx, dword [ebp - 0x54]
push ecx
lea eax, [ebp - 0x2f]
mov ecx, edx
push eax
call fcn.100028b0
lea eax, [ebp - 0xa4]
push eax
call fcn.10005a00
add esp, 0x20
mov byte [ebp - 4], 0xf
mov edx, eax
mov ecx, dword [edi + 0xdc]
mov ecx, dword [ebx + ecx + 8]
call fcn.10015b30
mov eax, dword [ebp - 0x90]
cmp eax, 0x10
jb 0x10035dc0
inc eax
lea ecx, [ebp - 0xa4]
push eax
push dword [ebp - 0xa4]
call fcn.10002790
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x90], 0xf
mov dword [ebp - 0x94], 0
mov byte [ebp - 0xa4], 0
cmp eax, 0x10
jb 0x10035dfa
inc eax
lea ecx, [ebp - 0x8c]
push eax
push dword [ebp - 0x8c]
call fcn.10002790
mov ecx, dword [0x100a63bc]
mov dword [ebp - 0x78], 0xf
mov dword [ebp - 0x7c], 0
mov byte [ebp - 0x8c], 0
test ecx, ecx
je 0x10035eaf
mov edx, dword [esi + 0x24]
cmp edx, 1
jne 0x10035e2d
mov eax, dword [ecx + 0x44]
cmp eax, dword [esi + 0x20]
jb 0x10035e3a
cmp edx, 2
jne 0x10035eaf
mov eax, dword [ecx + 0x48]
cmp eax, dword [esi + 0x20]
jae 0x10035eaf
mov eax, dword [edi + 0xdc]
mov esi, dword [ebx + eax + 4]
test esi, esi
je 0x10035e62
push 4
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x10035e62
push 0xffff0000
mov ecx, esi
call dword [0x100944b8]
mov eax, dword [edi + 0xdc]
mov esi, dword [ebx + eax + 0xc]
test esi, esi
je 0x10035e8a
push 4
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x10035e8a
lea ecx, [esi + 0xd0]
mov dl, 7
call fcn.10015cd0
mov eax, dword [edi + 0xdc]
mov esi, dword [ebx + eax + 0x10]
mov ebx, dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test esi, esi
je 0x10035f29
push 4
push esi
call ebx
test eax, eax
jne 0x10035f29
mov dl, 7
jmp 0x10035f1e
mov eax, dword [edi + 0xdc]
mov esi, dword [ebx + eax + 4]
test esi, esi
je 0x10035ed7
push 4
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x10035ed7
push 0xfffff3ae
mov ecx, esi
call dword [0x100944b8]
mov eax, dword [edi + 0xdc]
mov esi, dword [ebx + eax + 0xc]
test esi, esi
je 0x10035eff
push 4
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x10035eff
lea ecx, [esi + 0xd0]
mov dl, 2
call fcn.10015cd0
mov eax, dword [edi + 0xdc]
mov esi, dword [ebx + eax + 0x10]
mov ebx, dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test esi, esi
je 0x10035f29
push 4
push esi
call ebx
test eax, eax
jne 0x10035f29
mov dl, 2
lea ecx, [esi + 0xd0]
call fcn.10015cd0
mov ecx, dword [ebp - 0x58]
mov esi, dword [edi + ecx*4 + 0xac]
test esi, esi
je 0x10035f4d
push 4
push esi
call ebx
test eax, eax
jne 0x10035f4a
push 1
mov ecx, esi
call dword [0x10094488]
mov ecx, dword [ebp - 0x58]
mov esi, dword [ebp - 0x50]
inc esi
mov dword [ebp - 0x50], esi
cmp esi, dword [ebp - 0x6c]
jl 0x10035620
mov esi, dword [edi + 0x194]
mov eax, dword [edi + 0x19c]
mov dword [ebp - 0x6c], eax
test esi, esi
je 0x10035f84
push 4
push esi
call ebx
test eax, eax
jne 0x10035f84
push dword [ebp - 0x6c]
mov ecx, esi
call dword [0x100944b4]
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x10035fb1
mov edi, dword [ebp - 0x18]
mov esi, ebx
cmp ebx, edi
je 0x10035fa2
mov ecx, esi
call fcn.10037970
add esi, 0x40
cmp esi, edi
jne 0x10035f94
mov eax, dword [ebp - 0x64]
sub eax, ebx
sar eax, 6
push eax
push ebx
call fcn.100378c0
mov eax, dword [ebp + 0x24]
cmp eax, 0x10
jb 0x10035fc6
inc eax
lea ecx, [ebp + 0x10]
push eax
push dword [ebp + 0x10]
call fcn.10002790
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.1003e245
mov esp, ebp
pop ebp
ret 0x20