Function at 0x1003ad80
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100ceb8b
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x1d0
mov eax, dword [0x100f7040]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
cmp byte [edi + 0x20], 0
mov ecx, 0xe10
je 0x1003b260
mov esi, dword [edi + 0x24]
test esi, esi
jle 0x1003addf
dec esi
mov dword [edi + 0x24], esi
test esi, esi
js 0x1003b24f
mov eax, esi
cdq
idiv ecx
mov eax, 0x88888889
mov ecx, edx
imul ecx
add edx, ecx
mov ecx, 0x3c
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x50], eax
mov eax, esi
cdq
idiv ecx
mov esi, edx
mov dword [ebp - 4], 0
xorps xmm0, xmm0
push 8
mov dword [ebp - 0x30], 0
movups xmmword [ebp - 0x2c], xmm0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
call fcn.100892d0
lea ecx, [ebp - 0x30]
add esp, 4
mov dword [eax + 4], 0
mov dword [ebp - 0x30], eax
mov dword [eax], ecx
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], 0
mov eax, dword [ebp - 0x50]
xor ecx, ecx
mov dword [ebp - 4], 1
push esi
push eax
cmp eax, 0xa
jae 0x1003afed
cmp esi, 0xa
jae 0x1003af45
mov dl, 0x77
mov dword [ebp - 0x8c], 0x13524777
mov dword [ebp - 0x88], 0x1352474d
mov byte [ebp - 0x84], cl
nop dword [eax + eax]
xor byte [ebp + ecx - 0x8b], dl
inc ecx
cmp ecx, 7
jae 0x1003aeb5
mov dl, byte [ebp - 0x8c]
jmp 0x1003aea0
sub esp, 0x1c
mov byte [ebp - 0x84], 0
mov edx, esp
lea ecx, [ebp - 0x8b]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1003aee5
sub ecx, esi
lea eax, [ebp - 0x8b]
push ecx
push eax
mov ecx, edx
call fcn.10003370
lea eax, [ebp - 0xe4]
push eax
call fcn.1000d7c0
mov esi, eax
add esp, 0x28
lea eax, [ebp - 0x30]
cmp eax, esi
je 0x1003af25
mov ecx, eax
call fcn.10002f50
push esi
lea ecx, [ebp - 0x30]
call fcn.10008460
lea ecx, [ebp - 0xe4]
call fcn.10002f50
mov eax, dword [ebp - 0xe4]
mov dword [ebp - 0xe4], 0
jmp 0x1003b148
mov dl, 0x47
mov dword [ebp - 0x68], 0x23627747
mov dword [ebp - 0x64], 0x23627d
xor byte [ebp + ecx - 0x67], dl
inc ecx
cmp ecx, 6
jae 0x1003af64
mov dl, byte [ebp - 0x68]
jmp 0x1003af55
sub esp, 0x1c
mov byte [ebp - 0x61], 0
mov edx, esp
lea ecx, [ebp - 0x67]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1003af90
sub ecx, esi
lea eax, [ebp - 0x67]
push ecx
push eax
mov ecx, edx
call fcn.10003370
lea eax, [ebp - 0x100]
push eax
call fcn.1000d7c0
mov esi, eax
add esp, 0x28
lea eax, [ebp - 0x30]
cmp eax, esi
je 0x1003afcd
mov ecx, eax
call fcn.10002f50
push esi
lea ecx, [ebp - 0x30]
call fcn.10008460
lea ecx, [ebp - 0x100]
call fcn.10002f50
mov eax, dword [ebp - 0x100]
mov dword [ebp - 0x100], 0
jmp 0x1003b148
cmp esi, 0xa
jae 0x1003b09d
mov dl, 0x57
mov dword [ebp - 0x70], 0x6d337257
mov dword [ebp - 0x6c], 0x337267
xor byte [ebp + ecx - 0x6f], dl
inc ecx
cmp ecx, 6
jae 0x1003b015
mov dl, byte [ebp - 0x70]
jmp 0x1003b006
sub esp, 0x1c
mov byte [ebp - 0x69], 0
mov edx, esp
lea ecx, [ebp - 0x6f]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1003b040
sub ecx, esi
lea eax, [ebp - 0x6f]
push ecx
push eax
mov ecx, edx
call fcn.10003370
lea eax, [ebp - 0x11c]
push eax
call fcn.1000d7c0
mov esi, eax
add esp, 0x28
lea eax, [ebp - 0x30]
cmp eax, esi
je 0x1003b07d
mov ecx, eax
call fcn.10002f50
push esi
lea ecx, [ebp - 0x30]
call fcn.10008460
lea ecx, [ebp - 0x11c]
call fcn.10002f50
mov eax, dword [ebp - 0x11c]
mov dword [ebp - 0x11c], 0
jmp 0x1003b148
mov dl, 0x2e
mov dword [ebp - 0x58], 0x144a0b2e
mov word [ebp - 0x54], 0x4a0b
mov byte [ebp - 0x52], 0
xor byte [ebp + ecx - 0x57], dl
inc ecx
cmp ecx, 5
jae 0x1003b0bf
mov dl, byte [ebp - 0x58]
jmp 0x1003b0b0
sub esp, 0x1c
mov byte [ebp - 0x52], 0
mov edx, esp
lea ecx, [ebp - 0x57]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1003b0f0
sub ecx, esi
lea eax, [ebp - 0x57]
push ecx
push eax
mov ecx, edx
call fcn.10003370
lea eax, [ebp - 0x138]
push eax
call fcn.1000d7c0
mov esi, eax
add esp, 0x28
lea eax, [ebp - 0x30]
cmp eax, esi
je 0x1003b12d
mov ecx, eax
call fcn.10002f50
push esi
lea ecx, [ebp - 0x30]
call fcn.10008460
lea ecx, [ebp - 0x138]
call fcn.10002f50
mov eax, dword [ebp - 0x138]
mov dword [ebp - 0x138], 0
push 8
push eax
call fcn.10089370
movaps xmm0, xmmword [str.uRGHBOHA]
lea eax, [ebp - 0x2c]
add esp, 8
mov dword [ebp - 0xb8], 0x7b55037d
cmp dword [ebp - 0x18], 0xf
movups xmmword [ebp - 0xc8], xmm0
cmova eax, dword [ebp - 0x2c]
xor ecx, ecx
push eax
mov byte [ebp - 0xb4], 0
mov al, byte [ebp + ecx - 0xc7]
xor al, byte [ebp - 0xc8]
mov byte [ebp + ecx - 0xc7], al
inc ecx
cmp ecx, 0x13
jb 0x1003b180
sub esp, 0x1c
mov byte [ebp - 0xb4], 0
mov edx, esp
lea ecx, [ebp - 0xc7]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1003b1d0
sub ecx, esi
lea eax, [ebp - 0xc7]
push ecx
push eax
mov ecx, edx
call fcn.10003370
lea eax, [ebp - 0x154]
push eax
call fcn.1000d7c0
add esp, 0x24
mov byte [ebp - 4], 2
mov edx, eax
mov ecx, dword [edi + 8]
call fcn.1001e320
lea ecx, [ebp - 0x154]
call fcn.10002f50
mov eax, dword [ebp - 0x154]
push 8
push eax
mov dword [ebp - 0x154], 0
call fcn.10089370
add esp, 8
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x30]
call fcn.10002f50
mov eax, dword [ebp - 0x30]
push 8
push eax
mov dword [ebp - 0x30], 0
call fcn.10089370
add esp, 8
cmp dword [edi + 0x24], 0
jg 0x1003b260
mov byte [edi + 0x20], 0
mov dword [edi + 0x24], 0
cmp byte [edi + 0x21], 0
je 0x1003b719
movzx eax, word [edi + 0x28]
mov ecx, eax
test ax, ax
jle 0x1003b27d
dec eax
mov word [edi + 0x28], ax
movzx ecx, ax
test cx, cx
js 0x1003b708
movsx esi, cx
mov ecx, 0xe10
mov eax, esi
cdq
idiv ecx
mov eax, 0x88888889
mov ecx, edx
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
movzx eax, cx
mov ecx, 0x3c
mov dword [ebp - 0x50], eax
mov eax, esi
cdq
idiv ecx
movzx esi, dx
mov dword [ebp - 4], 3
xorps xmm0, xmm0
push 8
mov dword [ebp - 0x4c], 0
movups xmmword [ebp - 0x48], xmm0
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0
call fcn.100892d0
lea ecx, [ebp - 0x4c]
add esp, 4
mov dword [eax + 4], 0
mov dword [ebp - 0x4c], eax
mov dword [eax], ecx
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0xf
mov byte [ebp - 0x48], 0
mov edx, dword [ebp - 0x50]
mov dword [ebp - 4], 4
cmp dx, 0xa
jae 0x1003b3f5
cmp esi, 0xa
jae 0x1003b3f5
movzx eax, dx
xor ecx, ecx
push esi
push eax
mov dl, 0x50
mov dword [ebp - 0x98], 0x34756050
mov dword [ebp - 0x94], 0x3475606a
mov byte [ebp - 0x90], 0
nop word [eax + eax]
xor byte [ebp + ecx - 0x97], dl
inc ecx
cmp ecx, 7
jae 0x1003b365
mov dl, byte [ebp - 0x98]
jmp 0x1003b350
sub esp, 0x1c
mov byte [ebp - 0x90], 0
mov edx, esp
lea ecx, [ebp - 0x97]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1003b395
sub ecx, esi
lea eax, [ebp - 0x97]
push ecx
push eax
mov ecx, edx
call fcn.10003370
lea eax, [ebp - 0x170]
push eax
call fcn.1000d7c0
mov esi, eax
add esp, 0x28
lea eax, [ebp - 0x4c]
cmp eax, esi
je 0x1003b3d5
mov ecx, eax
call fcn.10002f50
push esi
lea ecx, [ebp - 0x4c]
call fcn.10008460
lea ecx, [ebp - 0x170]
call fcn.10002f50
mov eax, dword [ebp - 0x170]
mov dword [ebp - 0x170], 0
jmp 0x1003b608
mov eax, esi
movzx ecx, dx
push eax
push ecx
xor ecx, ecx
cmp dx, 0xa
jae 0x1003b4ae
mov dl, 0x47
mov dword [ebp - 0x78], 0x23627747
mov dword [ebp - 0x74], 0x23627d
xor byte [ebp + ecx - 0x77], dl
inc ecx
cmp ecx, 6
jae 0x1003b427
mov dl, byte [ebp - 0x78]
jmp 0x1003b418
sub esp, 0x1c
mov byte [ebp - 0x71], 0
mov edx, esp
lea ecx, [ebp - 0x77]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1003b451
sub ecx, esi
lea eax, [ebp - 0x77]
push ecx
push eax
mov ecx, edx
call fcn.10003370
lea eax, [ebp - 0x18c]
push eax
call fcn.1000d7c0
mov esi, eax
add esp, 0x28
lea eax, [ebp - 0x4c]
cmp eax, esi
je 0x1003b48e
mov ecx, eax
call fcn.10002f50
push esi
lea ecx, [ebp - 0x4c]
call fcn.10008460
lea ecx, [ebp - 0x18c]
call fcn.10002f50
mov eax, dword [ebp - 0x18c]
mov dword [ebp - 0x18c], 0
jmp 0x1003b608
cmp esi, 0xa
jae 0x1003b55d
mov dl, 0x7e
mov dword [ebp - 0x80], 0x441a5b7e
mov dword [ebp - 0x7c], 0x1a5b4e
xor byte [ebp + ecx - 0x7f], dl
inc ecx
cmp ecx, 6
jae 0x1003b4d6
mov dl, byte [ebp - 0x80]
jmp 0x1003b4c7
sub esp, 0x1c
mov byte [ebp - 0x79], 0
mov edx, esp
lea ecx, [ebp - 0x7f]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1003b500
sub ecx, esi
lea eax, [ebp - 0x7f]
push ecx
push eax
mov ecx, edx
call fcn.10003370
lea eax, [ebp - 0x1a8]
push eax
call fcn.1000d7c0
mov esi, eax
add esp, 0x28
lea eax, [ebp - 0x4c]
cmp eax, esi
je 0x1003b53d
mov ecx, eax
call fcn.10002f50
push esi
lea ecx, [ebp - 0x4c]
call fcn.10008460
lea ecx, [ebp - 0x1a8]
call fcn.10002f50
mov eax, dword [ebp - 0x1a8]
mov dword [ebp - 0x1a8], 0
jmp 0x1003b608
mov dl, 0x11
mov dword [ebp - 0x60], 0x2b753411
mov word [ebp - 0x5c], 0x7534
mov byte [ebp - 0x5a], 0
xor byte [ebp + ecx - 0x5f], dl
inc ecx
cmp ecx, 5
jae 0x1003b57f
mov dl, byte [ebp - 0x60]
jmp 0x1003b570
sub esp, 0x1c
mov byte [ebp - 0x5a], 0
mov edx, esp
lea ecx, [ebp - 0x5f]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1003b5b0
sub ecx, esi
lea eax, [ebp - 0x5f]
push ecx
push eax
mov ecx, edx
call fcn.10003370
lea eax, [ebp - 0x1c4]
push eax
call fcn.1000d7c0
mov esi, eax
add esp, 0x28
lea eax, [ebp - 0x4c]
cmp eax, esi
je 0x1003b5ed
mov ecx, eax
call fcn.10002f50
push esi
lea ecx, [ebp - 0x4c]
call fcn.10008460
lea ecx, [ebp - 0x1c4]
call fcn.10002f50
mov eax, dword [ebp - 0x1c4]
mov dword [ebp - 0x1c4], 0
push 8
push eax
call fcn.10089370
movaps xmm0, xmmword [0x100ef100]
lea eax, [ebp - 0x48]
add esp, 8
mov dword [ebp - 0xa0], 0x20760873
cmp dword [ebp - 0x34], 0xf
movups xmmword [ebp - 0xb0], xmm0
cmova eax, dword [ebp - 0x48]
xor ecx, ecx
push eax
mov word [ebp - 0x9c], 0xe
mov al, byte [ebp + ecx - 0xaf]
xor al, byte [ebp - 0xb0]
mov byte [ebp + ecx - 0xaf], al
inc ecx
cmp ecx, 0x14
jb 0x1003b642
sub esp, 0x1c
mov byte [ebp - 0x9b], 0
mov edx, esp
lea ecx, [ebp - 0xaf]
xorps xmm0, xmm0
lea esi, [ecx + 1]
mov dword [edx], 0
movups xmmword [edx + 4], xmm0
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1003b690
sub ecx, esi
lea eax, [ebp - 0xaf]
push ecx
push eax
mov ecx, edx
call fcn.10003370
lea eax, [ebp - 0x1e0]
push eax
call fcn.1000d7c0
add esp, 0x24
mov byte [ebp - 4], 5
mov edx, eax
mov ecx, dword [edi + 0xc]
call fcn.1001e320
lea ecx, [ebp - 0x1e0]
call fcn.10002f50
mov eax, dword [ebp - 0x1e0]
push 8
push eax
mov dword [ebp - 0x1e0], 0
call fcn.10089370
add esp, 8
lea ecx, [ebp - 0x4c]
call fcn.10002f50
mov eax, dword [ebp - 0x4c]
push 8
push eax
mov dword [ebp - 0x4c], 0
call fcn.10089370
add esp, 8
cmp word [edi + 0x28], 0
jg 0x1003b719
xor eax, eax
mov byte [edi + 0x21], 0
mov word [edi + 0x28], ax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.100892c0
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret