Function at 0x10031140
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10077e13
mov eax, dword fs:[0]
push eax
sub esp, 0x9c
mov eax, dword [0x1009d084]
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.10030da0
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 0x10031379
mov bl, byte [ebp + 0xc]
xor esi, esi
test bl, bl
je 0x10031222
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], 0x7d
push eax
mov byte [ebp - 0x63], 0
call fcn.10002a10
add esp, 8
test eax, eax
jne 0x1003121a
mov ecx, dword [edi + 0xe8]
movzx eax, bl
cmp dword [ecx + esi + 0x30], eax
jne 0x1003134c
mov eax, dword [edi + 0xe8]
lea ecx, [ebp - 0x1c]
add eax, esi
push eax
call fcn.100327b0
jmp 0x1003134c
test bl, bl
jne 0x1003148d
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], 0x40
push eax
mov byte [ebp - 0x5b], 0
call fcn.10002a10
add esp, 8
test eax, eax
je 0x10031204
mov eax, dword [edi + 0xe8]
mov ecx, dword [eax + esi + 0x1c]
test ecx, ecx
jne 0x1003125e
xor ebx, ebx
jmp 0x10031283
mov eax, 0x10624dd3
mul ecx
mov ecx, 0xd78ae8
shr edx, 6
imul eax, edx, 0x3e8
push eax
call fcn.10014880
mov ecx, eax
call dword [0x1009044c]
mov ebx, eax
mov ecx, dword [edi + 0xe8]
cmp dword [esi + ecx + 0x1c], 0
jbe 0x10031415
cmp dword [esi + ecx + 0x1c], 0x5f5e100
jae 0x10031415
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 0x100312d0
mov eax, dword [ecx]
jmp 0x100312d2
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 0x10031319
mov edx, dword [ecx]
jmp 0x1003131b
mov edx, ecx
push 0xffffffffffffffff
push 0
push eax
mov byte [edx], 0
call fcn.10002470
mov byte [ebp - 4], 1
call fcn.10013140
add esp, 0x30
test al, al
je 0x10031349
mov eax, dword [edi + 0xe8]
lea ecx, [ebp - 0x1c]
add eax, esi
push eax
call fcn.100327b0
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 0x100311c3
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 0x10031600
mov eax, dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
lea ebx, [edi + 0xac]
mov edi, 0xc
mov esi, dword [ebx]
test esi, esi
je 0x100313b3
push 4
push esi
call eax
test eax, eax
jne 0x100313ae
push eax
mov ecx, esi
call dword [0x10090478]
mov eax, dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
add ebx, 4
sub edi, 1
jne 0x10031396
mov edi, dword [ebp - 0x54]
mov esi, dword [edi + 0x194]
mov ebx, dword [edi + 0x19c]
test esi, esi
je 0x100313e0
push 4
push esi
call eax
test eax, eax
jne 0x100313e0
push ebx
mov ecx, esi
call dword [0x100904a4]
mov ebx, dword [ebp - 0x1c]
mov dword [edi + 0x1a0], 1
test ebx, ebx
je 0x10032031
mov edi, dword [ebp - 0x18]
mov esi, ebx
cmp ebx, edi
je 0x10032022
mov ecx, esi
call fcn.100339f0
add esi, 0x40
cmp esi, edi
jne 0x10031402
jmp 0x10032022
test ebx, ebx
je 0x10031349
mov edx, dword [edi + 0xe8]
mov cl, byte [ebx + 4]
mov edx, dword [edx + esi + 0x1c]
call fcn.10011010
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 0x10031460
mov eax, dword [ecx]
jmp 0x10031462
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.10011410
add esp, 4
jmp 0x10031328
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], 0x56
push eax
mov byte [ebp - 0x57], 0
call fcn.10002a10
add esp, 8
test eax, eax
je 0x10031204
mov ecx, dword [edi + 0xe8]
movzx eax, bl
cmp dword [ecx + esi + 0x30], eax
jne 0x1003134c
mov eax, ecx
mov ecx, dword [eax + esi + 0x1c]
test ecx, ecx
jne 0x100314dc
xor ebx, ebx
jmp 0x10031501
mov eax, 0x10624dd3
mul ecx
mov ecx, 0xd78ae8
shr edx, 6
imul eax, edx, 0x3e8
push eax
call fcn.10014880
mov ecx, eax
call dword [0x1009044c]
mov ebx, eax
mov ecx, dword [edi + 0xe8]
cmp dword [ecx + esi + 0x1c], 0
jbe 0x1003159a
cmp dword [ecx + esi + 0x1c], 0x5f5e100
jae 0x1003159a
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 0x1003154a
mov eax, dword [ecx]
jmp 0x1003154c
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 0x10031319
mov edx, dword [ecx]
jmp 0x1003131b
test ebx, ebx
je 0x10031349
mov edx, dword [edi + 0xe8]
mov cl, byte [ebx + 4]
mov edx, dword [edx + esi + 0x1c]
call fcn.10011010
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 0x100315e5
mov eax, dword [ecx]
jmp 0x100315e7
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 0x10031476
lea eax, [ebp - 0x50]
sar ebx, 6
push eax
push ebx
mov dword [ebp - 0x50], 0x10030b10
mov dword [ebp - 0x74], ebx
call fcn.10032aa0
movd xmm0, ebx
mov eax, ebx
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x10092260]
divsd xmm0, qword [0x10091b78]
movsd qword [ebp - 0x70], xmm0
fld qword [ebp - 0x70]
fstp qword [esp]
call fcn.10071490
fstp qword [ebp - 0x70]
movsd xmm0, qword [ebp - 0x70]
movsd qword [esp], xmm0
call fcn.1002a520
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 0x10031fdd
nop
inc ecx
mov dword [ebp - 0x58], ecx
cmp ecx, 0xe
jg 0x10031fdd
mov eax, dword [ebp - 0x74]
dec eax
cmp esi, eax
jle 0x100316d7
mov esi, dword [edi + ecx*4 + 0xac]
test esi, esi
je 0x10031fcd
push 4
push esi
call ebx
test eax, eax
jne 0x10031fca
push eax
jmp 0x10031fc2
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 0x100316f2
xor ebx, ebx
jmp 0x1003171a
mov eax, 0x10624dd3
mul ecx
mov ecx, 0xd78ae8
shr edx, 6
imul eax, edx, 0x3e8
push eax
call fcn.10014880
mov ecx, eax
call dword [0x1009044c]
mov edx, dword [ebp - 0x60]
mov ebx, eax
mov eax, dword [esi + 0x1c]
mov dword [ebp - 0x54], ebx
test eax, eax
je 0x10031951
cmp eax, 0x5f5e100
jae 0x10031951
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.10033840
mov ecx, dword [edi + 0xdc]
mov edx, esi
mov ecx, dword [ebx + ecx]
call fcn.10014710
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.10012dd0
mov ecx, dword [esi + ebx + 0x24]
mov esi, dword [ecx + eax*4 - 4]
mov dword [ebp - 0x60], esi
test esi, esi
je 0x10031b76
mov eax, 0x10624dd3
mov ecx, 0xd78ae8
mul esi
shr edx, 6
imul eax, edx, 0x3e8
push eax
call fcn.10014880
mov ecx, eax
call dword [0x1009044c]
mov dword [ebp - 0x54], eax
test eax, eax
je 0x10031b76
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.10011010
mov esi, eax
test esi, esi
je 0x10031838
cmp dword [esi + 0x48], 0
je 0x10031838
push dword [ebp - 0x60]
xor edx, edx
lea ecx, [ebp - 0x8c]
push esi
call fcn.10011080
add esp, 8
lea ecx, [ebp - 0x34]
push eax
call fcn.100074c0
lea ecx, [ebp - 0x8c]
call fcn.10002360
jmp 0x10031872
push dword [ebp - 0x60]
mov edx, dword [ebp - 0x54]
lea ecx, [ebp - 0x8c]
push 0
call fcn.10011080
add esp, 8
lea ecx, [ebp - 0x34]
push eax
call fcn.100074c0
mov eax, dword [ebp - 0x78]
cmp eax, 0x10
jb 0x10031872
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 0x1003192c
mov ecx, dword [ebx + eax + 0x18]
lea edx, [ebp - 0x34]
add ecx, 4
call fcn.10012ae0
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 0x100318d0
movsx edx, word [esi + 0x56]
movsx eax, word [ecx + 0x66]
add edx, eax
jmp 0x100318d4
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 0x1003192f
mov eax, dword [edi + 0xdc]
lea edx, [ebp - 0x34]
mov ecx, dword [ebx + eax + 0x18]
mov ecx, dword [ecx]
call fcn.100145d0
mov eax, dword [edi + 0xdc]
mov dl, 1
mov ecx, dword [ebx + eax + 0x18]
mov ecx, dword [ecx]
call fcn.10014570
jmp 0x1003192f
mov esi, dword [ebp - 0x5c]
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x20]
cmp eax, 0x10
jb 0x10031b79
inc eax
lea ecx, [ebp - 0x34]
push eax
push dword [ebp - 0x34]
call fcn.10002790
jmp 0x10031b79
test ebx, ebx
jne 0x10031963
mov ecx, dword [ebp - 0x58]
mov ebx, dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
jmp 0x100316b5
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.10011010
mov dword [ebp - 0x60], eax
test eax, eax
je 0x100319af
cmp dword [eax + 0x48], 0
je 0x100319af
push dword [esi + 0x1c]
xor edx, edx
lea ecx, [ebp - 0x8c]
push eax
call fcn.10011080
add esp, 8
lea ecx, [ebp - 0x4c]
push eax
call fcn.100074c0
jmp 0x10031a01
push dword [esi + 0x1c]
mov edx, ebx
lea ecx, [ebp - 0x8c]
push 0
call fcn.10011080
add esp, 8
mov dword [ebp - 0x5c], eax
lea ecx, [ebp - 0x4c]
cmp ecx, eax
je 0x100319fd
mov eax, dword [ebp - 0x38]
cmp eax, 0x10
jb 0x100319e0
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 0x10031a1c
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.10011410
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.10014710
mov byte [ebp - 4], 7
mov eax, dword [ebp - 0x78]
cmp eax, 0x10
jb 0x10031a71
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 0x10031b5b
mov ecx, dword [ebx + eax + 0x18]
lea edx, [ebp - 0x4c]
add ecx, 4
call fcn.10012ae0
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 0x10031aec
movsx edx, word [edx + 0x56]
movsx eax, word [ecx + 0x66]
add edx, eax
jmp 0x10031af0
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 0x10031b5b
mov eax, dword [edi + 0xdc]
lea edx, [ebp - 0x4c]
mov ecx, dword [ebx + eax + 0x18]
mov ecx, dword [ecx]
call fcn.100145d0
mov eax, dword [edi + 0xdc]
mov eax, dword [ebx + eax + 0x18]
mov eax, dword [eax]
mov dword [ebp - 0x54], eax
test eax, eax
je 0x10031b5b
push 4
push eax
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x10031b5b
mov ecx, dword [ebp - 0x54]
push 1
call dword [0x10090478]
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x38]
cmp eax, 0x10
jb 0x10031b79
inc eax
lea ecx, [ebp - 0x4c]
push eax
push dword [ebp - 0x4c]
call fcn.10002790
jmp 0x10031b79
mov esi, dword [ebp - 0x5c]
mov eax, dword [esi + 0x24]
cmp eax, 1
jne 0x10031c3e
mov edx, dword [esi + 0x20]
push ecx
lea ecx, [ebp - 0x8c]
call fcn.100132f0
add esp, 4
mov byte [ebp - 4], 0xa
cmp dword [eax + 0x14], 0x10
jb 0x10031ba3
mov eax, dword [eax]
movaps xmm0, xmmword [0x10092350]
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 0x10031bb5
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 0x10031bf1
mov eax, dword [edx]
jmp 0x10031bf3
mov eax, edx
mov byte [eax], 0
cmp byte [ebp - 0x2f], 0
jne 0x10031c00
xor ecx, ecx
jmp 0x10031c1a
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 0x10031c10
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 0x10031cf9
cmp eax, 2
jne 0x10031d62
mov edx, dword [esi + 0x20]
push ecx
lea ecx, [ebp - 0x8c]
call fcn.100132f0
add esp, 4
mov byte [ebp - 4], 0xc
cmp dword [eax + 0x14], 0x10
jb 0x10031c65
mov eax, dword [eax]
movaps xmm0, xmmword [0x100923e0]
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 0x10031c77
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 0x10031cb3
mov eax, dword [edx]
jmp 0x10031cb5
mov eax, edx
mov byte [eax], 0
cmp byte [ebp - 0x2f], 0
jne 0x10031cc2
xor ecx, ecx
jmp 0x10031cda
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 0x10031cd0
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.10014710
mov eax, dword [ebp - 0x90]
cmp eax, 0x10
jb 0x10031d28
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 0x10031d62
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.100132f0
add esp, 4
mov byte [ebp - 4], 0xe
cmp dword [eax + 0x14], 0x10
jb 0x10031d80
mov eax, dword [eax]
movaps xmm0, xmmword [0x10091f60]
xor ecx, ecx
push eax
movups xmmword [ebp - 0x30], xmm0
mov word [ebp - 0x20], 0x4b
mov al, byte [ebp - 0x30]
xor byte [ebp + ecx - 0x2f], al
inc ecx
cmp ecx, 0x10
jb 0x10031d94
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 0x10031dd0
mov eax, dword [edx]
jmp 0x10031dd2
mov eax, edx
mov byte [eax], 0
cmp byte [ebp - 0x2f], 0
jne 0x10031ddf
xor ecx, ecx
jmp 0x10031df2
lea ecx, [ebp - 0x2f]
lea eax, [ecx + 1]
mov dword [ebp - 0x54], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10031de8
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.10014710
mov eax, dword [ebp - 0x90]
cmp eax, 0x10
jb 0x10031e40
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 0x10031e7a
inc eax
lea ecx, [ebp - 0x8c]
push eax
push dword [ebp - 0x8c]
call fcn.10002790
mov ecx, dword [0x100a23bc]
mov dword [ebp - 0x78], 0xf
mov dword [ebp - 0x7c], 0
mov byte [ebp - 0x8c], 0
test ecx, ecx
je 0x10031f2f
mov edx, dword [esi + 0x24]
cmp edx, 1
jne 0x10031ead
mov eax, dword [ecx + 0x44]
cmp eax, dword [esi + 0x20]
jb 0x10031eba
cmp edx, 2
jne 0x10031f2f
mov eax, dword [ecx + 0x48]
cmp eax, dword [esi + 0x20]
jae 0x10031f2f
mov eax, dword [edi + 0xdc]
mov esi, dword [ebx + eax + 4]
test esi, esi
je 0x10031ee2
push 4
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x10031ee2
push 0xffff0000
mov ecx, esi
call dword [0x100904a8]
mov eax, dword [edi + 0xdc]
mov esi, dword [ebx + eax + 0xc]
test esi, esi
je 0x10031f0a
push 4
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x10031f0a
lea ecx, [esi + 0xd0]
mov dl, 7
call fcn.100147b0
mov eax, dword [edi + 0xdc]
mov esi, dword [ebx + eax + 0x10]
mov ebx, dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test esi, esi
je 0x10031fa9
push 4
push esi
call ebx
test eax, eax
jne 0x10031fa9
mov dl, 7
jmp 0x10031f9e
mov eax, dword [edi + 0xdc]
mov esi, dword [ebx + eax + 4]
test esi, esi
je 0x10031f57
push 4
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x10031f57
push 0xfffff3ae
mov ecx, esi
call dword [0x100904a8]
mov eax, dword [edi + 0xdc]
mov esi, dword [ebx + eax + 0xc]
test esi, esi
je 0x10031f7f
push 4
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x10031f7f
lea ecx, [esi + 0xd0]
mov dl, 2
call fcn.100147b0
mov eax, dword [edi + 0xdc]
mov esi, dword [ebx + eax + 0x10]
mov ebx, dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test esi, esi
je 0x10031fa9
push 4
push esi
call ebx
test eax, eax
jne 0x10031fa9
mov dl, 2
lea ecx, [esi + 0xd0]
call fcn.100147b0
mov ecx, dword [ebp - 0x58]
mov esi, dword [edi + ecx*4 + 0xac]
test esi, esi
je 0x10031fcd
push 4
push esi
call ebx
test eax, eax
jne 0x10031fca
push 1
mov ecx, esi
call dword [0x10090478]
mov ecx, dword [ebp - 0x58]
mov esi, dword [ebp - 0x50]
inc esi
mov dword [ebp - 0x50], esi
cmp esi, dword [ebp - 0x6c]
jl 0x100316a0
mov esi, dword [edi + 0x194]
mov eax, dword [edi + 0x19c]
mov dword [ebp - 0x6c], eax
test esi, esi
je 0x10032004
push 4
push esi
call ebx
test eax, eax
jne 0x10032004
push dword [ebp - 0x6c]
mov ecx, esi
call dword [0x100904a4]
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x10032031
mov edi, dword [ebp - 0x18]
mov esi, ebx
cmp ebx, edi
je 0x10032022
mov ecx, esi
call fcn.100339f0
add esi, 0x40
cmp esi, edi
jne 0x10032014
mov eax, dword [ebp - 0x64]
sub eax, ebx
sar eax, 6
push eax
push ebx
call fcn.10033940
mov eax, dword [ebp + 0x24]
cmp eax, 0x10
jb 0x10032046
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.1003a2a5
mov esp, ebp
pop ebp
ret 0x20